在spring中获取Bean的方式有很多们,这里使用实现ApplicationContextAware接口
的方式封装一个可以快速获取Bean实例的方式,具体实现实例:
实现ApplicationContextAware接口获取程序运行上下文:
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* 描述:获取spring上下文环境,即ApplicationContext
*
* @author SXT
* @version 1.0
* @date 2022/10/23
*/
@Component
public final class ApplicationContextHandler implements ApplicationContextAware {
private static ApplicationContext applicationContext;
/**
* 获取运行程序的上下文环境
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextHandler.applicationContext = applicationContext;
}
/**
* 获取运行程序的上下文环境 applicationContext
* @return bean实例
*/
public static ApplicationContext getApplicationContext(){
assertApplicationContext();
return applicationContext;
}
private static void assertApplicationContext(){
if (null == applicationContext) {
throw new RuntimeException("ApplicationContextHandler中applicationContext属性为null,请确保ApplicationContext正常注入");
}
}
}
封装获取bean实例工具类:
import org.springframework.context.ApplicationContext;
/**
* 描述:获取IOC容器中的bean实例
*
* @author SXT
* @version 1.0
* @date 2022/10/23
*/
public final class BeanUtils {
private static ApplicationContext applicationContext = ApplicationContextHandler.getApplicationContext();
private BeanUtils(){}
/**
* 获取指定的bean
* @return bean实例
*/
public static <T> T getBean(String beanName,Class<T> tClass){
return applicationContext.getBean(beanName,tClass);
}
/**
* 获取指定bean名实例
* @return bean实例
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String beanName){
return (T)applicationContext.getBean(beanName);
}
/**
* 获取指定bean类型实例
* @return bean实例
*/
public static <T> T getBean(Class<T> tClass){
return applicationContext.getBean(tClass);
}
}
标签:applicationContext,return,ApplicationContext,Spring,bean,获取,Bean,实例,IOC From: https://www.cnblogs.com/qiushuiyu-108/p/17258690.html