1 回答
TA贡献1772条经验 获得超8个赞
似乎 Spring 默认会在初始化时加载一些属性,除非您专门编写逻辑来覆盖它们(就像我在 中写的那样MainClass.java
),否则没有选项可以覆盖这些属性。其中一些包括(logging.file,@ConditionalonExpression 中使用的键)。
一些有自己挑战的技巧:
在类路径中指定属性
application.properties
。在早期阶段加载的变量总是从此文件中读取。挑战:我已将所有属性紧密耦合到 jar 中,为了更改值,我必须重新编译并重新启动 Jar。使用配置文件并定义
application.properties
为application-profile.properties
. 挑战:我必须创建这么多配置文件,但之前的挑战仍然存在。将属性值作为 JVM 参数传递为
-Dproperty.key=value
. 挑战:认真吗?我应该发送多少属性作为 JVM 参数?实现
ApplicationContextInitialize
和覆盖initialize
方法。挑战:不建议覆盖 Spring 的默认行为,并且仅将其用于读取属性文件是不是有点矫枉过正?
解决方案:
用于-Dspring.config.location
指定属性文件。在这种情况下,spring 总是只从指定的位置读取属性。您也可以提供多个属性文件。有关更多详细信息,请参阅此内容。如果您在目录弹簧以相反的顺序加载它们时给出属性位置,似乎。但是,如果您指定文件,它将遵循指定的顺序。
注意:所有这些都可以组合在一起。要了解优先级,请参阅此。
添加回答
举报