英文:
Externalized Configuration in Spring boot
问题
我有一个外部配置文件(位于JAR文件外部)。我尝试运行并期望外部文件中的值将覆盖内部文件(JAR文件中的application.properties
在\resource\
中)中的值。
我阅读了文档并尝试了以下内容:
java -jar ccgame-1.0.jar --spring.config.location=classpath:/application.properties,file:/production.properties
但这并未生效。
我的JAR文件位于/target/
目录,我的production.properties
文件也在其中(在/target/
中)。
我该如何解决这个问题?
-
我应该将外部配置文件放在哪里?
-
我需要做些什么?
英文:
I have a external configuration file(out side jar). I try to run and expected
that value in external file will override value in internal file(application.properties
in \resource\
- in jar file).
I read Documentation and try this:
java -jar ccgame-1.0.jar --spring.config.location=classpath:/application.properties,file:/production.properties
This not working.
My jar file at \target\
directory and my production.properties
too(at \target\
)
How can I resolve my problem?
-
Where should I put external config file ?
-
And what I have to do ?
答案1
得分: 4
从Spring Boot 2.0开始,可以使用属性spring.config.additional-location
。使用这个属性,您可以设置外部配置文件,但是来自该配置的属性只会覆盖内部配置中的相应属性,而其他属性保持不变。
有关详细信息,请参见文档。
如果您需要完全覆盖整个配置,则继续使用spring.config.location
属性。
英文:
Starting from Spring Boot 2.0 it's possible to use property spring.config.additional-location
. With this property, you can set external config file, but properties from that config will only override the corresponding ones from internal config, leaving other properties unchanged.
More about it in docs.
If you need to completely override the whole config, then continue to use spring.config.location
property instead.
答案2
得分: 0
按照惯例,Spring Boot会按以下优先顺序在4个预定位置中寻找外部配置文件 - application.properties或application.yml:
1)当前目录的/config子目录
2)当前目录
3)类路径下的/config包
4)类路径根目录
您可以将application.properties放在这4个位置中的任何一个,而无需在执行jar时提供application.properties的位置。如果您想要指定任何其他自定义位置,则需要在执行jar时提供配置文件位置的路径:
java -jar -Dspring.config.location=<path-to-file> myProject.jar
来源:https://www.baeldung.com/spring-properties-file-outside-jar
英文:
By convention, Spring Boot looks for an externalized configuration file – application.properties or application.yml – in 4 predetermined locations in the following order of precedence:
- /config subdirectory of the current directory
- The current directory
- Classpath /config package
- The classpath root
You can place your application.properties in any of the 4 locations without needing to give the location of application.properties while executing the jar. If you want to given any other custom location , then you will have to provide the path of the config location while executing the jar:
java -jar -Dspring.config.location=<path-to-file> myProject.jar
Source: https://www.baeldung.com/spring-properties-file-outside-jar
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论