有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Spring引导中的java外部化配置

我有一个外部配置文件(外部jar)。我试着跑,期待着 外部文件中的该值将覆盖内部文件中的值(application.properties\resource\-在jar文件中)。 我读了Documentation并尝试了以下方法:

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

这不管用

我的jar文件在\target\目录下,我的production.properties也在\target\目录下

我如何解决我的问题

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

共 (2) 个答案

  1. # 1 楼答案

    按照惯例,Spring Boot会寻找一个外部化的配置文件——应用程序。属性或应用程序。yml–按以下优先顺序在4个预定位置:

    1. /当前目录的config子目录
    2. 当前目录
    3. 类路径/配置包
    4. 类路径根

    你可以提交申请。4个位置中的任意一个位置的属性,无需给出应用位置。属性,而执行jar。如果您想指定任何其他自定义位置,则必须在执行jar时提供配置位置的路径:

    java -jar -Dspring.config.location=<path-to-file> myProject.jar
    

    资料来源:https://www.baeldung.com/spring-properties-file-outside-jar

  2. # 2 楼答案

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

    更多关于它的信息请访问docs

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