一、springboot 启动时加载 application.properties的优先级
1.当前目录的./config目录
2.当前目录
3. classpath /config
package
4.The classpath root
二、配置实践
一般情况下把application.properties放在当前路径(jar包所在路径)的config目录下启动时会优先于工程内不的classpath下的application.properties。
-
使用 --spring.config.location参数定制路径,比如
java -jar springboottest-0.0.1-SNAPSHOT.jar --spring.config.location=file:./config8888/
,这时springboot会优先加载/config8888/下的application.properties。
-
配合--spring.profiles.active可以使用不同profile来区分环境。使用profile时配置文件格式如下application-{profile}.properties。
比如我们在./config8888/下新建application-dev.properties和application-prod.properties,server.port参数分别为8888和8889。
echo "server.port=8888" > ./config8888/application-dev.properties
echo "server.port=8889" > ./config8888/application-prod.properties
分别启动应用
java -jar springboottest-0.0.1-SNAPSHOT.jar --spring.config.location=file:./config8888/ --pring.profiles.active=dev
java -jar springboottest-0.0.1-SNAPSHOT.jar --spring.config.location=file:./config8888/ --spring.profiles.active=prod
应用端口分别为8888和8889
-
配合spring.config.name参数可以修改配置文件的前缀。
比如在./config8888/新建文件myproject-dev.properties和myproject-prod.properties文件,server.port参数分别为9888和9889。
-
echo "server.port=9888" > ./config8888/myproject-dev.properties
echo "server.port=9889" > ./config8888/myproject-prod.properties
分别启动应用
-
java -jar springboottest-0.0.1-SNAPSHOT.jar --spring.config.name=myproject --spring.config.location=file:./config8888/ --spring.profiles.active=dev
java -jar springboottest-0.0.1-SNAPSHOT.jar --spring.config.name=myproject --spring.config.location=file:./config8888/ --spring.profiles.active=prod
端口好分别为9888和9889