Spring扩展接口-ApplicationContextAware

简介

spring在创建当前bean时,会去调用ApplicationContextAware接口的扩展点,ApplicationContextAware有个方法setApplicationContext。

实现ApplicationContextAware接口,可以获取到Spring的ApplicationContext上下文对象。ApplicationContext上下文继承了BeanFactory, 因而可以从上下文对象获取指定bean。如果该bean尚未创建,会触发bean的创建流程,功能跟BeanFactoryAware相同。

示例

@Service
public class BeanFactoryUtils implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    public static <T> T getBean(String beanName) {
        Objects.requireNonNull(beanName, "beanName不能为空!");
        return (T) applicationContext.getBean(beanName);
    }

    public static <T> T getBean(Class<T> requiredType) {
        Objects.requireNonNull(requiredType, "requiredType不能为空!");
        return (T) applicationContext.getBean(requiredType);
    }

    public <T> Collection<T> getBeanList(Class<T> requiredType) {
        return MapUtils.emptyIfNull(applicationContext.getBeansOfType(requiredType)).values();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容