第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是实现类。结构如下所示
上一篇:模型渲染的基础认识
相关新闻
- 2023-05-06 微pe怎么初始化U盘(微pe怎么恢复初
- 2023-05-06 Xp系统boot 进入pe(boot manager 怎么进入
- 2023-05-06 win pe修复bcdboot(pe修复系统)
- 2023-05-06 win7更新失败 pe(win7更新失败还原更
- 2023-05-06 u盘装了pe读取不了(u盘能进pe读取不
- 2023-05-06 u盘pe 发热(u盘发热烫手)
- 2023-05-06 u盘pe下看不到硬盘(u盘启动pe看不到
- 2023-05-06 pe盘 ntfs(u盘ntfs格式)
- 2023-05-06 sony笔记本进入pe模式(联想笔记本怎
- 2023-05-06 pe启动盘进不去(pe启动盘进不去系统
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
