通过实现 ApplicationContextAware 接口获取 Spring 上下文
当一个类实现了 ApplicationContextAware 接口之后,这个类就可以方便地获得 ApplicationContext 对象(Spring 上下文)。
Spring 容器在创建 Bean 之后,发现 Bean 实现了 ApplicationContextAware 接口,会自动调用该 Bean 的 setApplicationContext 方法,调用该方法时,会将容器本身(ApplicationContext 对象)作为参数传递给该方法。
案例
封装一个 ApplicationContextUtil,方便从 Spring 容器中获取 Bean。
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component public class ApplicationContextUtil implements ApplicationContextAware { private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } public static ApplicationContext getApplicationContext(){ return context; } /** * 通过 name 获取 Bean * @param name beanName * @return Object */ public static Object getBean(String name){ return getApplicationContext().getBean(name); } public static <T> T getBean(Class<T> requiredType) throws BeansException{ return getApplicationContext().getBean(requiredType); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南