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); } }
分类:
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人