ApplicationContextAware接口的作用

ApplicationContextAware接口的作用

介绍

定义一个 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