您的位置:首页 > 移动开发

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的时候生成的。

在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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: