【Spring】spring工具类,使用bean名字获取bean

983 阅读1分钟

在一些静态类中需要使用到ioc中的bean可以使用该方法根据对象名称获取到bean对象。 原理就是使用ApplicationContextAware注入 ApplicationContext然后使用getBean获取bean。

@Component
public class SpringIocUtil implements ApplicationContextAware {

    private static ApplicationContext context;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }

    /**
     * 从ioc容器中中拿指定名称和类型的bean
     *
     * @param beanName bean的名称
     * @param clazz    bean的类型
     * @param <T>      泛型标志
     * @return bean
     */
    public static <T> T getBeanByNameNameClazz(String beanName, Class<? extends T> clazz) {
        return context.getBean(beanName, clazz);
    }
}