如何在XML配置定义中获取ApplicationContext,对应@Autowired的等效写法?
等效XML配置实现方案
你可以通过两种无注解的方式实现ApplicationContext的注入,无需依赖@Autowired注解:
方法1:直接配置属性注入(无需修改类结构,最简单)
Spring容器会默认注册一个id为applicationContext的内置Bean,直接在你的目标Bean的XML配置中通过属性引用注入即可。
首先在类中提供对应属性的setter方法:
private ApplicationContext appContext; // 必须提供对应setter方法,XML注入依赖setter实现 public void setAppContext(ApplicationContext appContext) { this.appContext = appContext; }
XML配置写法如下:
<bean id="yourBean" class="com.yourpackage.YourBeanClass"> <property name="appContext" ref="applicationContext"/> </bean>
方法2:实现ApplicationContextAware接口(Spring官方推荐标准方式)
让你的目标Bean实现org.springframework.context.ApplicationContextAware接口,Spring会自动检测该接口实现类,主动将ApplicationContext实例注入。
类的写法:
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class YourBeanClass implements ApplicationContextAware { private ApplicationContext appContext; @Override public void setApplicationContext(ApplicationContext applicationContext) { this.appContext = applicationContext; } }
XML中仅需正常注册该Bean即可,无需额外配置注入属性:
<bean id="yourBean" class="com.yourpackage.YourBeanClass"/>
内容的提问来源于stack exchange,提问作者boucekv
相关产品推荐
相关产品推荐

