ApplicationContextInitializer 和 BeanFactoryPostProcessor 的区别

Fah*_*ook 1 java spring applicationcontext

ApplicationContextInitializer 和 BeanFactoryPostProcessor 有什么区别?什么时候实现什么接口?

cha*_*nes 5

我对它们的区别的理解主要在于它们的回调方法被调用的时间。

ApplicationContextInitializer允许您在加载持久 bean 定义之前进行额外的初始化(例如您的application-context.xml)。当您想在加载定义之前选择配置文件时很有用。

BeanFactoryPostProcessor在加载 bean 定义但未创建 bean 本身时调用。很好的例子是PropertyPlaceholderConfigurer用具体值替换占位符。

您可以深入了解相关文档。 ApplicationContextInitializerBeanFactoryPostProcessor