プログラムで beanPostProcessor を ClassPathXmlApplicationContext に追加する方法はありますか?
XMLで宣言的に行うことはできますが、明らかにプログラムで追加する方法はありません。
私のプロセッサは、Bean が MyInterfaceAware の場合は setMyInterface(...) を実行する必要があります。
MyInterface の実装はコードでインスタンス化されるため、コードで実行する必要があります。XML の開始時には使用できません。
Spring 3.1.2.RELEASE を使用しています。
ありがとう、
...これが私がしていることです...
public void setSpringBeanFactory(BeanFactory beanFactory) {
this.beanFactory = (ApplicationContext) beanFactory;
((ClassPathXmlApplicationContext) beanFactory).getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
public Object postProcessBeforeInitialization(Object bean,
String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean,
String beanName) throws BeansException {
if (bean instanceof RegistryAware)
((RegistryAware) bean).setRegistry(ApplicationContextRegistryImpl.this);
return bean;
}
});
((ClassPathXmlApplicationContext)beanFactory).refresh();
}