一、基础
1、定义
之前我们的application.yml/properties
文件都放到了classpath:
下,然后SpringBoot项目启动后会自动读取并加载,那么这个文件放在哪呢?只能放到classpath:
下吗?不是。
2、位置以及优先级
SpringBoot启动后会扫描以下位置的application.yml/properties
文件作为SpringBoot的默认配置。
- 1、file:./config/
- 2、file:./
- 3、classpath:/config/
- 4、classpath:/
优先级由高到低,高优先级的配置会覆盖低优先级的配置;
二、高级
1、互补配置
1.1、定义
我们上面介绍了配置文件是有优先级的,比如:我们在最高优先级(file:./config/
)上配置了端口号,我们又在最低优先级(classpath:/
)上配置了访问的域名,则SpringBoot启动的时候会加载全部配置文件不重复的配置项。也就是说会把端口和访问域名都加载进来,低优先级的配置并不会失效。
1.2、例子
1.2.1、高优先级的配置(yml)
server:
port: 8081
1.2.2、低优先级的配置(properties)
server.port=8080
# 自定义访问域名
server.address=www.chentongwei.com
1.2.3、启动后的效果
端口:8081
2、自定义配置文件加载位置
1、定义
若我们不想用以上的目录,该怎么自定义位置呢?可以用spring.config.location=
来指定。项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。但是你指定后,启动SpringBoot并不会生效,是因为启动方式应该是
java -jar xxx.jar --spring.config.location=E:/application.properties
这样我们启动的时候就会加载E盘的application.properties
。
2、例子
java -jar xxx.jar --spring.config.location=E:/application.properties
3、用途
我觉得非常好用,这样运维人员部署的时候,直接用一个命令启动起来后,如果发现配置的bug了,直接更改配置文件然后重启jar即可,无需重新打包在部署上线。
三、广告
-
QQ群【Java初学者学习交流群】:458430385
-
微信公众号【Java码农社区】
- 今日头条号:编程界的小学生
网友评论