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抽象

Spring学习(十五)----- Spring AOP通知实例 – Advice

Spring学习(二十五)Spring AOP之增强介绍

Spring的注解@Qualifier(二十五)