Spring Boot中的外部化配置

时间:2020-09-18 08:11:33

标签: java spring spring-boot spring-boot-configuration

我有一个外部配置文件(外部jar)。我尝试运行并期望 外部文件中的值将覆盖内部文件中的值(jar文件中application.properties中的{\resource\中的值)。 我读了Documentation,然后尝试以下方法:

java -jar ccgame-1.0.jar --spring.config.location=classpath:/application.properties,file:/production.properties

这不起作用。

我的jar文件位于\target\目录,我的production.properties也位于\target\

如何解决我的问题?

  • 我应该在哪里放置外部配置文件?
  • 那我该怎么办?

2 个答案:

答案 0 :(得分:2)

从Spring Boot 2.0开始,可以使用属性spring.config.additional-location。使用此属性,您可以设置外部配置文件,但该配置中的属性将仅覆盖内部配置中的相应文件,而其他属性保持不变。

有关docs的更多信息。

如果您需要完全覆盖整个配置,请继续使用spring.config.location属性。

答案 1 :(得分:1)

按照惯例,Spring Boot按照以下优先顺序在4个预定的位置中寻找一个外部化的配置文件– application.properties或application.yml:

    当前目录的
  1. / config子目录
  2. 当前目录
  3. Classpath / config软件包
  4. classpath根

您可以将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