介绍
定义一个 ApplicationContextHolder类
获取 ApplicationContext容器
就需要实现 ApplicationContextAware接口
。
当Bean中需要其他的Bean时,这样spring容器将感知到当前的Bean需要注入一个容器对象,然后从容器中拿到Bean
配置
ApplicationContextHolder类
@Component
public class ApplicationContextHolder implements ApplicationContextAware {
/**
* 声明容器
*/
private static ApplicationContext applicationContext;
/**
* 通过set方法将容器本身给注入进来
* @param applicationContext
* @throws BeansException
*/
@Override
public void setApplicationContext(ApplicationContext appContext) throws BeansException {
applicationContext = appContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 封装容器中的三个getBean方法
*/
public static Object getBean(String id) {
return applicationContext.getBean(id);
}
public static <T> T getBean(String id, Class<T> clazz) {
return applicationContext.getBean(id, clazz);
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}
之后只需要调用ApplicationContextHolder的getBean方法就可以获取容器中的Bean