package com.abc.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @author jiang
* @Description 不使用spring的自动装配,在一个并未委托给spring容器管理的对象中,
* 获取spring容器中管理的对象
*
* @Note 使用这种方式,该对象必须交给spring容器管理,spring容器在初始化时会自动检查容器中
* 所有的Bean,发现某个Bean实现了ApplicationContextAware接口后,会自动调用
* setApplicationContext()方法,将容器本身做为一个对象传入。
*/
@Component
public class SpringContext implements ApplicationContextAware {
private static ApplicationContext springContext;
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
springContext = context;
}
public static ApplicationContext getSpirngContext() {
return springContext;
}
/**
* @Description 泛型方法,获取容器管理的对象
* @param clazz
* @return
*/
public static <T> T getBean(Class<T> clazz) {
return springContext.getBean(clazz);
}
}