看来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仅从指定的位置读取属性。您也可以提供多个属性文件。
请参阅此以获取更多详细信息。
似乎如果您提供属性位置,则目录会以相反的顺序弹簧加载它们。但是,如果指定文件,则遵循指定的顺序。
注意:所有这些都可以合并在一起。 要了解优先级,请参考此。



