SpringBoot启动文件的优先顺序测试

  • 运行时指定加载文件时,最高
    • Java jar spring.config.location优先于spring.profiles.active
    • Java -jar 三种语法
  • 运行时不指定加载文件时,其次
    • 1.项目路径下的config目录优先级最高—1
    • 2.项目路径的优先级其次—2
    • 3.Eclipse 设置的启动参数 —3
    • 4.src/man/resources最后 —4
      • 4.1application.properties 4—1
      • 4.2config 和 application.yml 4—2
        • 如果application.yml 不设置spring.profiles.active
        • 如果application.yml 设置spring.profiles.active

SpringBoot加载文件时两个默认前提:

  1. 指定路径优先于默认配置

  2. 外部【项目】大于内部【Jar】

  3. config相对于其它路径优先

  4. properties相对于yml优先

运行时指定加载文件时,最高

Java jar spring.config.location优先于spring.profiles.active

如下情况,spring.config.location有效,而spring.profiles.active无效。

java -jar SpringTest-3.0.jar --spring.profiles.active=test --spring.config.location=C:/D/coding/codespace/SpringTest/application.yml

Java -jar 三种语法

java -jar SpringTest-3.0.jar --spring.config.location=C:/D/coding/codespace/SpringTest/application.yml
java -jar -Dspring.profiles.active=prod application.jar

或者
与Eclipse里配置相同-spring.profiles.active

java -jar SpringTest-3.0.jar --spring.profiles.active=test

运行时不指定加载文件时,其次

1.项目路径下的config目录优先级最高—1

项目config目录和项目根目录下的application-xxx.properties文件,无关乎命名,全部加载。
其中config的优先级要大于项目路径下的文件。

但是application.xml就不能随便命名,否则默认不会加载。

2.项目路径的优先级其次—2

  1. Project/config/application.yml
  2. Project/application.yml

3.Eclipse 设置的启动参数 —3

如果在Eclipse的Java Application中设置了启动参数,优先级其次。
这个非常重要,调试时需要留意此处是否做了配置。
当然,部署jar时无关乎Eclipse的设置,在R&D时这个设置有效。

4.src/man/resources最后 —4

4.1application.properties 4—1

4.2config 和 application.yml 4—2

如果application.yml 不设置spring.profiles.active

  1. config
  2. Tomcat默认端口8080

如果application.yml 设置spring.profiles.active

  1. spring.profiles.active激活类型文件,同时properties 优先于 yml文件
  2. config不再起作用