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是否被激活
image.png

依赖注入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中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值