最佳答案
在春季,如果 bean 实现了 ApplicationContextAware
,那么它就能够访问 applicationContext
。因此,它可以得到其他豆类。
例如:。
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext context) throws BeansException {
applicationContext = context;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
}
然后 SpringContextUtil.getApplicationContext.getBean("name")
可以得到 bean 的“名称”。
要做到这一点,我们应该把这个 SpringContextUtil
内的 applications.xml
,例如。
<bean class="com.util.SpringContextUtil" />
这里的 bean SpringContextUtil
不包括属性 applicationContext
。我猜当初始化 Spring bean 时,将设置此属性。但这是怎么做到的呢?如何调用 setApplicationContext
方法?