实现BeanPostProcessor
接口与在Spring配置文件中使用init
/destroy
方法属性或实现InitializingBean
/DisposableBean
接口有什么不同?
发布于 2012-04-12 18:40:41
上面的回答清楚地解释了一些非常重要的方面。
除此之外,理解beanPostProcessor、初始化和销毁方法都是Spring bean生命周期的一部分,这一点也很重要。
BeanPostProcessor类有两个方法。
1) postProcessBeforeInitialization - as名称清楚地表明,它用于确保在初始化之前执行所需的操作。例如,您想要从远程源/服务加载某些属性文件/读取数据。
2) postProcessAfterInitialization -在将bean引用提供给应用程序之前,在初始化之后要做的任何事情。
被质疑的方法在生命周期中的顺序如下:
1) BeanPostProcessor.postProcessBeforeInitialization()
2) init()
3) BeanPostProcessor.postProcessAfterInitialization()
4)销毁()
您可以通过编写具有sysout的简单示例并检查它们的顺序来检查这一点。
发布于 2018-08-08 22:34:31
只是对上面所有答案的简短补充:如果您有任何通用逻辑,需要通用于所有Spring beans的通用逻辑,例如向beans注入记录器,设置属性文件,通过反射为beans的字段设置默认值;您可以将该逻辑放在一个地方:@Override
n回调(例如,如果您正在实现BeanPostProcessor
接口,则为postProcessBeforeInitialization(Object arg0, String arg1)
);而不是在所有beans中重复相同的逻辑。
https://stackoverflow.com/questions/9862127
复制相似问题