常用的Spring Aware解析

 

常用的Spring Aware解析

 

在初始化bean前,会调用如下Aware
BeanNameAware: 方法 setBeanName(String name) 获取到bean在spring中定义的beanName,一般很少用
BeanClassLoaderAware:方法  setBeanClassLoader(ClassLoader classLoader); 获取spring 容器的类加载器ClassLoader 对象
BeanFactoryAware: 实现这个BeanFactoryAware接口的子类可以获取spring容器的BeanFactory 对象,BeanFactory 是用来生产bean的,那么可以动态的去操作 要在spring容器中注入的bean

 

doCreateBean(beanName, mbdToUse, args) =>  initializeBean(beanName, exposedObject, mbd); =>  invokeAwareMethods(beanName, bean)


在初始化之前,invokeAwareMethods()方法之后调用postProcessBeforeInitialization 后置处理器,会调用如下Aware

EnvironmentAware:获取Environmet对象,可以对系统的一些变量信息进行修改,可以通过实现该Aware,修改application.properties中的变量(个别几个变量无法修改)
EmbeddedValueResolverAware:基于Spring解析获取 properties 文件单个属性值,并不能读取静态文件
ResourceLoaderAware : 获取资源加载器ResourceLoader 对象,可以获得外部资源文件
ApplicationEventPublisherAware : 应用事件发布器,可以发布事件,然后通过ApplicationListener接口来进行监听
MessageSourceAware : 用来处理国际化的,Spring将通过 setMessageSource setter方法自动将MessageSource注入到该类中
ApplicationContextAware : 可以获取spring容器上下文信息 ApplicationContext,有了这个ApplicationContext,可以做很多事,比如往容器里注册一个bean,从容器里面获取bean。这个我基本在每个spring项目中都会用到。

 

doCreateBean(beanName, mbdToUse, args) =>  initializeBean(beanName, exposedObject, mbd); => applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName); =>ApplicationContextAwareProcessor.invokeAwareInterfaces(bean)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值