Spring中获取IOC容器中的Bean实例工具封装

在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);
}
}

 

posted @   酸菜鱼没有鱼  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示