在工作的时候需要在非srping容器管理的类中获取spring容器。在以前的开发中一般是分成两种情况,一是都是由spring容器进行管理;二是非spring管理。
碰到这种混在一起的情况比较困惑,故来csdn找寻帮助,得到了解决办法,现在写下博客作为自我记录。
应用场景
在非容器管理的service类中获取容器中的dao。
解决方案
编写工具类SpringContextUtil.java,继承了ApplicationContextAware.
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; // Spring应用上下文环境
/*
* 实现了ApplicationContextAware 接口,必须实现该方法;
*通过传递applicationContext参数初始化成员变量applicationContext
*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}