我正在试验Spring的BeanPostProcessor,BeanFactoryPostProcessor,Initializing bean,destroy bean。
我对这些通知概念感到困惑。
我创建了一个实现Initi * Bean,Disposable bean的简单bean。并且还注册了样本后处理器,factoryPostprocessor。并在所有接口方法中添加了sysout。
我也创建了AbstractApplicationContext并注册了关闭钩子。
当我运行应用程序时,我看到BeanFactoryProcessor方法打印,AfterProperties方法,然后调用destroy方法。我没看到"初始化bean"称为..
BeanPostProcessor是否会覆盖初始化bean通知?
请解释一下。
答案 0 :(得分:1)
您在null
方法中都返回了BeanPostProcessor
。这导致Spring认为您不希望对该bean进行任何进一步处理,包括通过InitializingBean
进行初始化。
只需返回您收到的原始bean(在两种方法中)
@Override
public Object postProcessAfterInitialization(Object bean, String arg1) throws BeansException {
System.out.println("postProcessAfterInitialization");
return bean;
}
因为您不想处理它。