通过实现 ApplicationContextAware 接口获取 Spring 上下文

原文:ApplicationContextAware 详解用法

当一个类实现了 ApplicationContextAware 接口之后,这个类就可以方便地获得 ApplicationContext 对象(Spring 上下文)。

Spring 容器在创建 Bean 之后,发现 Bean 实现了 ApplicationContextAware 接口,会自动调用该 Bean 的 setApplicationContext 方法,调用该方法时,会将容器本身(ApplicationContext 对象)作为参数传递给该方法。

案例

封装一个 ApplicationContextUtil,方便从 Spring 容器中获取 Bean。

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class ApplicationContextUtil implements ApplicationContextAware {

    private static ApplicationContext context;
    
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }
    
    public static ApplicationContext getApplicationContext(){
        return context;
    }
    
    /**
     * 通过 name 获取 Bean
     * @param name beanName
     * @return Object
     */
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    public static <T> T getBean(Class<T> requiredType) throws BeansException{
        return getApplicationContext().getBean(requiredType);
    }
}
posted @ 2024-11-02 13:17  Higurashi-kagome  阅读(14)  评论(0编辑  收藏  举报