В spring, если bean реализует ApplicationContextAware
, тогда он может получить доступ к applicationContext
. Поэтому он может получить другой beans.
например
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 initialize, это свойство установлено. Но как это делается? Как вызывается метод setApplicationContext
?