介绍:
上节我们介绍了invokeBeanFactoryPostProcessors方法,
这篇文章将重点解析refresh中的另一个重要方法---registerBeanPostProcessors
invokeBeanFactoryPostProcessors 方法主要用于处理 BeanFactoryPostProcessor 接口,而 registerBeanPostProcessors 方法主要用于处理 BeanPostProcessor 接口。BeanFactoryPostProcessor 和 BeanPostProcessor,这两个接口接口很像。BeanFactoryPostProcessor 是针对 BeanFactory 的扩展,主要用在 bean 实例化之前,读取 bean 的定义,并可以修改它。BeanPostProcessor 是针对 bean 的扩展,主要用在 bean 实例化之后,执行初始化方法前后。。。
允许开发者对 bean 实例进行修改
(注:也有一些比较特殊的BeanPostProcessor 是在实例化前后去做调用的,比如aop的生成代理的功能,就是在 被代理的类实例化后去生成代理对象的。。。BeanPostProcessor 有两个方法 postBefore 和postAtfer
这里和BeanFactoryPostProcessor有点区别,,BeanFactoryPostProcessor通常只有postAfter方法。。)
概述:
本方法会注册所有的 BeanPostProcessor,将所有实现了 BeanPostProcessor 接口的类加载到 BeanFactory 中。
BeanPostProcessor 接口是 Spring 初始化 bean 时对外暴露的扩展点,Spring IoC 容器允许 BeanPostProcessor 在容器初始化 bean 的前后,添加自己的逻辑处理。在 registerBeanPostProcessors 方法只是注册到 BeanFactory 中,具体调用是在 bean 初始化的时候。
具体的:在所有 bean 实例化时,执行初始化方法前会调用所有 BeanPostProcessor 的 postProcessBeforeInitialization 方法,在执行初始化方法后会

本文详细解析了Spring框架中`registerBeanPostProcessors`方法,该方法用于注册实现了`BeanPostProcessor`接口的类,允许在bean实例化前后进行扩展处理。文章介绍了BeanPostProcessor和BeanFactoryPostProcessor的区别,以及BeanPostProcessor在bean初始化时的调用时机,包括`postProcessBeforeInitialization`和`postProcessAfterInitialization`方法。通过示例展示了如何自定义BeanPostProcessor并注册到Spring容器中。
最低0.47元/天 解锁文章
669

被折叠的 条评论
为什么被折叠?



