第7章 Spring的注解@PropertySource 使用与深入理解
来源:http://www.tudoupe.com时间:2022-02-20
@PropertySource注解用来增加PropertySource到 Spring 的Environment中。和@Configuration注解结合使用。
使用例子
给一个指定文件app.properties包含一个键值对bean.name=java.lang.String。@PropertySource会把app.properties放入到Environment里。
解析带有占位符
如果占位符my.placheholder已经注册到Environment,那么占位符将被解析成对应的值。如果没有找到对应值,那么将会使用默认值app。
覆盖
如果有多个.property的文件,并且每个文件都包含相同的键名,那么存在覆写。
源码分析
处理@PropertSource注解
@PropertySource注解和@Configuration注解结合使用,那源码的入口就是ConfigurationClassPostProcessor#processConfigBeanDefinitions,在方法内创建了类ConfigurationClassParser。由ConfigurationClassParser#processPropertySource方法负责解析处理@PropertySource。大概逻辑就是:获取资源路径,然后由Environment解析路径占位符,得到实际资源路径,然后由ResourceLoader根据路径加载资源Resource,最后把Resource转成PropertySource放入Environment里。
解析占位符 PropertyPlaceholderHelper
PropertyPlaceholderHelper来负责解析替换占位符。具体源码不分析,来看一下具体使用几个例子。
调用时序图

类图

扩展
Environment.getProperty(String key):是有顺序的。首先会从systemProperties里获取,如果获取不到,再从systemEnvironment获取;如果获取不到,则从由@PropertySource指定路径获取。
PropertySource
ProertySource可以看作是键值对一种数据结构,包含两个字段name和 泛型类型T。
PropertySources
PropertySources可以看作是PropertySource的List结构版本,可以存放多个。
MutablePropertySources
MutablePropertySources是实现类。结构如下所示
上一篇:模型渲染的基础认识
下一篇:没有了
相关新闻
- 2022-02-20 模型渲染的基础认识
- 2022-02-20 TypeError: addmm_() takes 2 positional argu
- 2022-02-20 ubuntu使用nginx部署vue项目
- 2022-02-20 opencv 图像颜色空间变换
- 2022-02-20 win7win10双系统不能选win7的解决教程
- 2022-02-20 win31iso
- 2022-02-19 weiPe系统启动盘还原
- 2022-02-19 Echarts——绘制饼图并导入数据,
- 2022-02-19 python数据处理——numpy 计算变化率
- 2022-02-19 win10系统安装win7后找不到硬盘怎么
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
