Spring(十五)--SpringEnvironment抽象
Posted jazon@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring(十五)--SpringEnvironment抽象相关的知识,希望对你有一定的参考价值。
理解SpringEnvironment抽象
- 统一的Spring配置属性管理
SpringFramework3.1开始引入Environment抽象,它统一Spring配置属性的存储,包括占位符处理和类型转换,不仅完整地替换PropertyPlaceholderConfigurer,而且还支持更丰富的配置属性源。
- 条件话SpringBean装配管理
通过EnvironmentProfiles信息,帮助Spring容器提供条件化装配Bean。
SpringEnvironment接口使用场景
- 用于属性占位符处理
- 用于转换Spring配置属性类型
- 用于存储Spring配置属性源
- 用于Profiles状态维护
Environment占位符处理
org.springframework.context.support.PropertySourcesPlaceholderConfigurer是个BeanFactoryPostProcessor,可以将BeanDefinition中的占位符替换为具体值以及为@Value
后续填充bean属性时注入valueResolver。数据来源: 1该类的location属性,指定数据源文件。2.spring的Environment数据源。这就是Environment占位符处理场景。
@Profile
状态维护
Environment#acceptsProfiles能判断profile是否被激活
依赖注入Environment
- 直接依赖注入: 1.通过EnvironmentAware接口回调。2.通过
@Autowired
注入Environment - 间接依赖注入: 1.通过ApplicationContextAware接口,然后从context里获取。2.通过
@Autowired
注入ApplicationContext,然后获取依赖。
依赖查找Environment
- 直接依赖查找: beanName为environment
- 间接以来查找:ApplicationContext.getEnvironment
新增Spring配置属性源
- 基于注解扩展Spring配置属性源:
@PropertySource
- 基于API扩展Spring配置属性源:在Spring应用上下文启动前,在
@Value
等属性注入前,将自定义的PropertySources加入到Environment中。
以上是关于Spring(十五)--SpringEnvironment抽象的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例
Spring(十五)--SpringEnvironment抽象
Spring(十五)--SpringEnvironment抽象