Spring 引导中的外部化配置
Externalized Configuration in Spring boot
我有一个外部配置文件(外部 jar)。我尝试 运行 并期望
外部文件中的值将覆盖内部文件中的值(application.properties
in \resource\
- 在 jar 文件中)。
我阅读了 Documentation 并尝试了这个:
java -jar ccgame-1.0.jar --spring.config.location=classpath:/application.properties,file:/production.properties
这不起作用。
我的 jar 文件在 \target\
目录和我的 production.properties
目录(在 \target\
)
我该如何解决我的问题?
- 我应该把外部配置文件放在哪里?
- 我必须做什么?
按照惯例,Spring Boot 会按照以下优先顺序在 4 个预先确定的位置查找外部配置文件 – application.properties 或 application.yml:
- /当前目录下的config子目录
- 当前目录
- 类路径/配置包
- 类路径根目录
您可以将 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
从 Spring Boot 2.0 开始,可以使用 属性 spring.config.additional-location
。使用此属性,您可以设置外部配置文件,但该配置中的属性只会覆盖内部配置中的相应属性,其他属性不变。
在 docs 中了解更多信息。
如果您需要完全覆盖整个配置,请继续使用 spring.config.location
属性。
我有一个外部配置文件(外部 jar)。我尝试 运行 并期望
外部文件中的值将覆盖内部文件中的值(application.properties
in \resource\
- 在 jar 文件中)。
我阅读了 Documentation 并尝试了这个:
java -jar ccgame-1.0.jar --spring.config.location=classpath:/application.properties,file:/production.properties
这不起作用。
我的 jar 文件在 \target\
目录和我的 production.properties
目录(在 \target\
)
我该如何解决我的问题?
- 我应该把外部配置文件放在哪里?
- 我必须做什么?
按照惯例,Spring Boot 会按照以下优先顺序在 4 个预先确定的位置查找外部配置文件 – application.properties 或 application.yml:
- /当前目录下的config子目录
- 当前目录
- 类路径/配置包
- 类路径根目录
您可以将 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
从 Spring Boot 2.0 开始,可以使用 属性 spring.config.additional-location
。使用此属性,您可以设置外部配置文件,但该配置中的属性只会覆盖内部配置中的相应属性,其他属性不变。
在 docs 中了解更多信息。
如果您需要完全覆盖整个配置,请继续使用 spring.config.location
属性。