Question
在使用SpringBoot过程中你是否会有以下疑问?
- 具体有多少种配置属性源的方式呢?
- 为何使用@Value 注解就能够获取到属性源中的值呢?
- 属性源这么多,如果属性相同的话 那么用哪个值呢?
- 属性源是如何绑定到我们的程序中的呢?
本篇文章会针对以上问题逐个分析
Answer
我们的所有属性源都存放在AbstractEnvironment
中的属性propertySources
中; 每加载一个属性源就会往里面塞一个propertySource
;
然后当我们需要取某个属性的时候,就会从这个propertySources
遍历查找,找到就返回; 所以我们就可以知道,如果多个属性源中有相同的属性,那么肯定是排在最前面的被找到就会返回,优先级最高; 那么这是整个背景; 我们现在来分析具体的问题
具体有多少种配置属性源的方式呢?
以下优先级由高到低
-
命令行方式
java -jar xx.jar --spring.profiles.active=pro&
关于命令行的详细请看文章 【SpringBoot 一】SpringApplication启动类的Args详解 -
如果是以web方式启动的还会有 {
servletConfigInitParams
、servletContextInitPar