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加载文件时两个默认前提:
-
指定路径优先于默认配置
-
外部【项目】大于内部【Jar】
-
config相对于其它路径优先
-
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
- Project/config/application.yml
- 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
- config
- Tomcat默认端口8080
如果application.yml 设置spring.profiles.active
- spring.profiles.active激活类型文件,同时properties 优先于 yml文件
- config不再起作用