Springcloud学习笔记49--Springboot读取外部配置文件,避免更新jar包内配置文件重新打包部署
1 Springboot读取外部配置文件优先级
如果springBoot项目与配置文件不分离,那么每次修改配置文件都需要重新重新打包部署应用,十分麻烦。解决方法是让springboot读取外部配置文件,实现应用与配置分离。
先看一下官方文档:
24.3 Application property files SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment: 01 /config subdirectory of the current directory. 02 The current directory 03 classpath /config package 04 The classpath root The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).
SpringApplication可以从四种方式中读取到配置文件,并且是有优先级的,所有方式下的配置文件都会被读取,高优先级的内容会覆盖底优先级的内容。
- 在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下
- 直接把配置文件放到jar包的同级目录
- 在classpath下建一个config文件夹,然后把配置文件放进去
- 在classpath下直接放配置文件
1.1 应用与配置分离
推荐使用方式1,此方式在上述四种方式中优先级最高;
此时打开jar可见port=9020
此时,修改config目录下的配置文件application.yml的端口为9030
nohup java -jar flep-test06-1.0-SNAPSHOT.jar >log.out &
特别注意:启动脚本 nohup java -jar flep-test06-1.0-SNAPSHOT.jar >log.out & 。当前路径必须是jar包所在的路径才能执行;否则需要配置jar的绝对路径;
1.2 通过jar包启动命令指定配置文件
启动项目时指定配置文件的位置(优先级最高)
nohup java -jar -Dspring.config.location=/home/lucky/flep/temp/application.yml flep-test06-1.0-SNAPSHOT.jar >log.out &
看日志可知:
1.3 配置文件在jar包内
我们平常将项目打成jar包之后,配置文件会被放在BOOT-INF的classes目录下,这就是上面所说的第四种方式,也是优先级最低的配置文件读取方式。
参考文献:
https://blog.csdn.net/chang100111/article/details/122191892
https://blog.csdn.net/weixin_45087127/article/details/114894812