프로그래밍 방식으로 beanPathProcessor를 ClassPathXmlApplicationContext에 추가하는 방법이 있습니까?어떻게 프로그래밍 방식으로 beanPathProcessor를 ClassPathXmlApplicationContext에 추가 할 수 있습니까?
XML에서 선언적으로 할 수 있지만 프로그래밍 방식으로 추가 할 방법은 없습니다.
내 프로세서가 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();
}
이렇게 쉬운가요? 작동하지 않습니다! –
프로세서가 호출되지 않습니다. –
refresh() 후에 BeanPostProcessor를 추가하십시오. 내부 BF는 각 refresh()에서 다시 작성됩니다. 이전에 BPP가 필요하면 postProcessBeanFactory()를 재정 의하여 등록하십시오. (수퍼 전화를 잊지 마세요) –