ApplicationContextAware 获取Spring 上下文
2016-08-17 17:04
267 查看
Spring中,普通bean可以通过实现ApplicationContextAware得到ApplicationContext,需要重写setApplicationContext和getApplicationContext两个方法。我们知道,是通过setApplicationContext将spring的当前的applicationContext得到,那么spring是什么时候执行setApplicationContext方法的呢?
Spring源码中ApplicationContextAwareProcessor.postProcessBeforeInitialization(),对继承自ApplicationContextAware的bean进行处理,调用其setApplicationContext。而ApplicationContextAwareProcessor是在spring容器start的时候生成的。
使用ApplicationContext就可以获取想要的Bean了。
Spring源码中ApplicationContextAwareProcessor.postProcessBeforeInitialization(),对继承自ApplicationContextAware的bean进行处理,调用其setApplicationContext。而ApplicationContextAwareProcessor是在spring容器start的时候生成的。
在Spring中,实现ApplicationContextAware并覆盖setApplicationContext方法, 就可以获得ApplicationContext了。
public class SpringApplicationContextHolder implements ApplicationContextAware { public static ApplicationContext ctx; public void setApplicationContext(ApplicationContext ctx) throws BeansException { SpringApplicationContextHolder.ctx = ctx; } }
使用ApplicationContext就可以获取想要的Bean了。
public class SpringApplicationContextHolder implements ApplicationContextAware { public static ApplicationContext ctx; public void setApplicationContext(ApplicationContext ctx) throws BeansException { SpringApplicationContextHolder.ctx = ctx; } public static IXXXDao getXXXDao() { return ctx.getBean(IXXXDao.class); } }
相关文章推荐
- iOS - OC iOS 开发体系
- iOS - OC 与 Swift 互相操作
- Android之生成快捷方式
- iOS - OC 与 C 互相操作
- Android Studio查看android源码
- iOS - OC 术语表
- 微软官方的Unity支持组件
- 我心中的核心组件(可插拔的AOP)~第十三回 实现AOP的拦截组件Unity.Interception
- Android动态加载黑科技 动态创建Activity模式
- .NET 使用unity实现依赖注入
- android 后台service 实现无预览页面录像功能
- Swift完成fizz buzz test
- Android自定义View(二)画一个表
- Swift完成fizz buzz test
- Swift完成fizz buzz test
- JS与OC互调,JS打开系统相机,JS获取iOS系统图片,iOS中JS调OC
- iOS中 扫描二维码/生成二维码详解
- android handler学习
- Android经典侧滑菜单SlidingMenu使用介绍
- 使用Netty搭建APP推送服务器