SpringBoot 配置参数加载顺序

配置文件格式:

  1. SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件。
  2. 支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置。
  3. 同一目录下,properties配置优先级 > YAML配置优先级

配置文件目录:

SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。
可放置的默认目录(优先级从高到低)

  1. file:./config/ (当前项目路径config目录下);
  2. file:./ (当前项目路径下);
  3. classpath:/config/ (类路径config目录下);
  4. classpath:/ (类路径config下);

SpringBoot会从这四个位置全部加载配置文件并互补配置,优先级高的配置会覆盖优先级低的配置;

加载优先级:

数字小的优先级越高,即数字小的会覆盖数字大的参数值,我们来实践下,验证以上配置参数的加载顺序。


1、开发者工具 `Devtools` 全局配置参数;

2、单元测试上的 `@TestPropertySource` 注解指定的参数;

3、单元测试上的 `@SpringBootTest` 注解指定的参数;

4、命令行指定的参数,如 `java -jar springboot.jar --name="Java技术栈"`;

5、命令行中的 `SPRING_APPLICATION_JSONJSON` 指定参数, 如 `java -Dspring.application.json='{"name":"Java技术栈"}' -jar springboot.jar`

6、`ServletConfig` 初始化参数;

7、`ServletContext` 初始化参数;

8、JNDI参数(如 `java:comp/env/spring.application.json`);

9、Java系统参数(来源:`System.getProperties()`);

10、操作系统环境变量参数;

11、`RandomValuePropertySource` 随机数,仅匹配:`ramdom.*`;

//这两个有待商榷,我自己执行的时候这两个默认不会加载,必须要用`@PropertySource` 注解加载;但是用注解加载后优先级降低了。
12、JAR包外面的配置文件参数(`application-{profile}.properties(YAML)`)
//这两个有待商榷,我自己执行的时候这两个默认不会加载,必须要用`@PropertySource` 注解加载;但是用注解加载后优先级降低了。
13、JAR包里面的配置文件参数(`application-{profile}.properties(YAML)`)

14、JAR包外面的配置文件参数(`application.properties(YAML)`)

15、JAR包里面的配置文件参数(`application.properties(YAML)`)

16、`@Configuration`配置文件上 `@PropertySource` 注解加载的参数;

17、默认参数(通过 `SpringApplication.setDefaultProperties` 指定);

加载方式:

  1. @PropertySource 注解加载参数
  2. @value

转载自:
https://blog.csdn.net/youanyyou/article/details/82107780

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值