Spring之Bean实现了ApplicationContextAware等aware接口,对于setApplicationContext方法执行时间点的说明
来源:互联网 发布:js获取相同class的值 编辑:程序博客网 时间:2024/06/08 11:45
在Spring中,如果Bean对象实现了ApplicationContextAware接口,则Spring在完成Bean的初始化后,会将ApplicationContext上下文对象注入至该Bean对象中,注入方法为调用Bean的setApplicationContext方法,如:
public class BeanAwareTest implement ApplicationContextAware {
private static ApplicationContext applicationContext;public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextHolder.applicationContext = applicationContext;
}
}
那么上面的setApplicationContext方法是什么时间被执行的呢?
我们通过对spring源码进行追踪,发现AbstractApplicationContext类中的prepareBeanFactory方法有一句
beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));
该方法中涉及一个类ApplicationContextAwareProcessor,该类中有初始化方法
postProcessBeforeInitialization中有一句this.invokeAwareInterfaces(bean),
而invokeAwareInterfaces方法的代码如下:
示例调用序列图:private void invokeAwareInterfaces(Object bean) { if(bean instanceof Aware) { if(bean instanceof EnvironmentAware) { ((EnvironmentAware)bean).setEnvironment(this.applicationContext.getEnvironment()); } if(bean instanceof EmbeddedValueResolverAware) { ((EmbeddedValueResolverAware)bean).setEmbeddedValueResolver(this.embeddedValueResolver); } if(bean instanceof ResourceLoaderAware) { ((ResourceLoaderAware)bean).setResourceLoader(this.applicationContext); } if(bean instanceof ApplicationEventPublisherAware) { ((ApplicationEventPublisherAware)bean).setApplicationEventPublisher(this.applicationContext); } if(bean instanceof MessageSourceAware) { ((MessageSourceAware)bean).setMessageSource(this.applicationContext); } if(bean instanceof ApplicationContextAware) { ((ApplicationContextAware)bean).setApplicationContext(this.applicationContext); } }}
阅读全文
0 0
- Spring之Bean实现了ApplicationContextAware等aware接口,对于setApplicationContext方法执行时间点的说明
- 实现ApplicationContextAware的实例会自动调用setApplicationContext()方法
- Spring Bean--Aware接口
- Spring入门 Bean装配之Aware接口
- spring常用的几个aware bean接口:
- Spring入门(Bean的Aware接口)
- Spring中通过实现ApplicationContextAware接口获取bean
- spring之aware接口
- 使用Spring的AOP实现接口方法执行时间记录
- Spring Bean扩展接口 -- ApplicationContextAware源码分析
- 通过实现ApplicationContextAware接口获取bean
- 通过实现ApplicationContextAware接口获取bean
- 通过实现ApplicationContextAware接口动态获取bean
- Spring学习笔记(7.Spring Bean装配之Aware接口)
- Spring实现Aware接口,完成对IOC容器的感知
- Spring ApplicationContextAware 获取bean
- web 工程中利用Spring的 ApplicationContextAware接口自动注入bean
- 通过ApplicationContextAware接口获取Spring配置文件中的所有Bean
- nginx
- Scala练习-二叉树查找
- UnityShader入门精要学习笔记(二):数学知识
- 自定义Button,Button的父类控件如果有Press按下事件的时候的就return
- centos 6.9 快速部署lnmp网站
- Spring之Bean实现了ApplicationContextAware等aware接口,对于setApplicationContext方法执行时间点的说明
- Flex 布局
- Dataguard网络优化调整
- 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据库
- EasyUI—右键关闭选项卡
- 设计模式简介
- BZOJ 1087: [SCOI2005]互不侵犯King 状态压缩 题解
- IAR下STM32F103 Boot + APP的编程
- Python NLTK等环境配置安装