Spirng
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/** @Author: ZYB @Date: 2021/7/4 @Time: 10:56 @Description: */
public class ApplicationContextUtil implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
/**
* 根据bean的名字获取工厂中对应的Bean对象
* @param beanName
* @return
*/
public static Object getBean(String beanName) {
return context.getBean(beanName);
}
/** 通过class获取Bean */
public static <T> T getBean(Class<T> clazz) {
return context.getBean(clazz);
}
/** 通过name,以及Clazz返回指定的Bean */
public static <T> T getBean(String name, Class<T> clazz) {
return context.getBean(name, clazz);
}
}
ApplicationContext
??Spring容器是生成Bean实例的工厂,并管理容器中的Bean。生活中我们一般会把生产产品的地方称为工厂,而在这里bean对象的地方官方取名为BeanFactory,直译Bean工厂(com.springframework.beans.factory.BeanFactory),BeanFactory提供了OC容器最基本的形式,给具体的IOC容器的实现提供了规范,BeanFactory负责配置、创建、管理Bean等基本功能,BeanFactory被称为IoC容器,而称ApplicationContext为应用上下文,ApplicationContext继承了BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持。
ApplicationContextAware
??实现ApplicationContextAware接口之后,系统启动时就可以自动给我们的服务注入ApplicationContext对象(自动调用了接口中的setApplicationContext方法),我们就可以获取到ApplicationContext里的所有信息了。
??注意:实现ApplicationContextAware接口的类需要交给spring管理,使用@Component或者在配置文件声明bean