SpringBoot配置文件的加载顺序
SpringBoot配置文件的加载顺序
1、项目内配置文件的加载顺序
Spring Boot 启动会扫描以下位置的application.properties或者application.yml 文件作为Spring Boot 的默认配置文件。
路径 | 描述 | 优先级 |
---|---|---|
file:…/config/ | 项目根目录config文件夹下 | 优先级最高 |
file:…/ | 项目根目录下 | 优先级第二 |
classpath:/config | resources目录中config文件夹下 | 优先级第三 |
classpath:/ | resources目录下 | 优先级最低 |
以上是按照 优先级从高到低 的顺序 ,所有位置的文件都会被加载(互补配置),高优先级配置内容会覆盖低优先级配置内容。
也可以通过spring.config.location来改变默认配置
示例:
java -jar config-test.jar --spring.config.location=C:/application.properties
2、外部配置文件的加载顺序
Spring Boot 也可以从以下位置加载配置:
(优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置)
- 命令行参数
可以在命令行使用命令行参数修改配置文件的信息(多个参数可以用空格隔开 —配置项=值 ),例如修改端口为8081
java -jar config-test.jar --server.port=8081
- 来自java:comp/env的NDI属性
- java系统属性 ( System.getProperties() )
- 操作系统环境变量
- RandomValuePropertySource配置的randm.*属性值
- jar包 外部 / 内部 的application-{profile}.properties或application.yml(带spring.profile)配置文件(由Jar包外向Jar包内进行寻找)
- 优先加载带profile
- jar包 外部 / 内部 的application.properties 或 application.yml (带spring.profile)配置文件(由Jar包外向Jar包内进行寻找)
- 加载完带profile后再加载不带profile
- @Configuration注解类上的@PropertySource
- 通过SpringApplication.setDefaultProperties指定的默认属性
- 所有支持的配置加载来源:参考官方文档