springboot原理篇-配置优先级(一)
springboot项目一个支持三种配置文件
- application.properties
- application.yml
- application.yaml
其中,优先级的顺序是:
application.properties > application.yml > application.yaml
也就是说,优先级低的配置文件如果和优先级高的配置文件定义相同的配置信息,那么优先级高的会覆盖掉优先级低的配置文件
例如:
- application.yml
server:
port: 8082
-
application.yaml
server: port: 8083
上述的配置文件中,生效的端口是8082,yaml文件中的端口不会被启用
注意事项:
虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (
yml是主流
)。
SpringBoot 除了支持配置文件属性配置,还支持Java系统属性
和命令行参数
的方式进行属性配置。
-
Java系统属性配置 (格式: -Dkey=value)
-Dserver.port=9000
-
命令行参数 (格式:–key=value)
--server.port=10010
优先级: 命令行参数 > 系统属性参数 > properties参数 > yml参数 > yaml参数
思考:如果项目已经打包上线了,这个时候我们又如何来设置Java系统属性和命令行参数呢?
java -Dserver.port=9000 -jar XXXXX.jar --server.port=10010
- 仅设置Java系统属性
在SpringBoot项目当中,常见的属性配置方式有5种, 3种配置文件,加上2种外部属性的配置(Java系统属性、命令行参数)。通过以上的测试,我们也得出了优先级(从低到高):
- application.yaml(忽略)
- application.yml
- application.properties
- java系统属性(-Dxxx=xxx)
- 命令行参数(–xxx=xxx)
plication.yml - application.properties
- java系统属性(-Dxxx=xxx)
- 命令行参数(–xxx=xxx)