有一种方法可以以编程方式将 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();
}