在spring启动刷新的时候,会有一个准备工作也就是prepareBeanFactory方法,里面会添加BeanPostProcessor,也就是本文要说的ApplicationContextAwareProcessor
prepareBeanFactory(beanFactory);
protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) {
....
beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));
....
}
ApplicationContextAwareProcessor实现了BeanPostProcessor接口,所以在Bean实例化的前后会调用BeanPostProcessor的postProcessBeforeInitialization和postProcessAfterInitialization方法,ApplicationContextAwareProcessor中也会有这两个方法源码实例
ApplicationContextAwareProcessor会处理下面几种接口的实现类
1. EnvironmentAware
2. EmbeddedValueResolverAware
3. ResourceLoaderAware
4. ApplicationEventPublisherAware
5. MessageSourceAware
6. ApplicationContextAware
通过名字可以猜到大概,当我们实现上面的接口,就需要实现对应接口的方法,然后方法里面去拿到对应类的属性,比如ApplicationContextAware接口,需要重写setApplicationContext方法,就可以拿到ApplicationContext对象

最低0.47元/天 解锁文章
975

被折叠的 条评论
为什么被折叠?



