import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/*在非springboot工厂管理的普通类中,如果要获取工厂管理的对象,我们不能再使用 @Autowired 等注入的注解,此时的问题SpringBoot官方已给出解决办法,他们提供了一个 “ApplicationContextAware” 接口,实现此接口,即可获取工厂管理的全部内容。*/
@Component
public class ApplicationContextUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
//通过属性名获取对象的方法
public static Object getbyId(String id){
Object bean = applicationContext.getBean(id);
return bean;
}
//通过属性类获取对象的方法
public static Object getByClass(Class clazz){
Object bean = applicationContext.getBean(clazz);
return bean;
}
//通过属性类获取对象的方法
public static Object getByNameAndClass(String id,Class clazz){
Object bean = applicationContext.getBean(id,clazz);
return bean;
}
}
这个类直接在springboot容器中获取所有的工厂bean对象,直接复制