BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor以及BeanPostProcessor执行先后顺序

2023年7月30日08:05:15

1、BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor以及BeanPostProcessor都属于Spring的后置处理器,可以实现它们以达到动态注册bean定义,动态修改bean定义,以及动态修改bean。

2、BeanDefinitionRegistryPostProcessor继承接口BeanFactoryPostProcessor,该接口新增postProcessBeanDefinitionRegistry方法,方法参数是BeanDefinitionRegistry对象,BeanDefinitionRegistry对象是bean定义的保存中心。

3、BeanFactoryPostProcessor是一个接口,它允许自定义修改应用程序上下文的bean定义,在基于bean factory上调整上下文的bean属性值。BeanFactoryPostProcessor可以与bean交互并修改bean定义,但从不使用bean实例。

4、BeanPostProcessor也是一个接口,它允许动态修改应用程序上下文的bean,这时候bean已经实例化成功。

5、三者执行顺序:BeanDefinitionRegistryPostProcessor优先于BeanFactoryPostProcessor执行,BeanFactoryPostProcessor优先于BeanPostProcessor执行。

6、代码示例:

BeanDefinitionRegistryPostProcessor实现类

BeanFactoryPostProcessor实现类

BeanPostProcessor实现类

执行结果:

  • 作者:ly199108171231
  • 原文链接:https://blog.csdn.net/ly199108171231/article/details/103493857
    更新时间:2023年7月30日08:05:15 ,共 731 字。