Spring扩展接口-ApplicationContextAwa

2023-07-02  本文已影响0人  扎Zn了老Fe

简介

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();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读