Spring bean到底是如何创建的?(上)(三)

发布于 2022-6-15 17:12
浏览
0收藏

 

b. bean实例化之前阶段

 

这个阶段主要是回调所有的InstantiationAwareBeanPostProcessor对象的postProcessBeforeInstantiation方法,这个阶段如果有返回对象,直接不走下面的生命周期了(因为返回值不为null,直接return了),所以一般没有人这么玩。

 

BeanPostProcessor组件体系

 

InstantiationAwareBeanPostProcessor,这个接口是BeanPostProcessor的子类,BeanPostProcessor接口及其衍生的接口(接下来我称为BeanPostProcessor组件)是bean生命周期中一个非常核心的类体系,因为spring bean在创建过程中不同的阶段都会回调BeanPostProcessor组件的方法,这样就可以达到扩展的目的。因为只要你自己实现了BeanPostProcessor组件,就可以在生命周期的不同阶段可以对你的bean进行不同的操作,达到自己的目的。比如说阿里开源的dubbo中@DubboReference注解(2.7.7版本推出的注解,取代@Reference注解,功能没有什么变化)在整合spring的过程中主要是通过ReferenceAnnotationBeanPostProcessor来实现的,这个接口就是BeanPostProcessor的实现。说实话,bean的生命周期一大部分都是通过BeanPostProcessor组件来完成扩展的。

 

我们继续往下看

Spring bean到底是如何创建的?(上)(三)-开源基础软件社区

进入resolveBeforeInstantiation方法

Spring bean到底是如何创建的?(上)(三)-开源基础软件社区

进入applyBeanPostProcessorsBeforeInstantiation方法

Spring bean到底是如何创建的?(上)(三)-开源基础软件社区

c . bean的实例化阶段

 

这个阶段是根据你的class对象,来创建一个实例对象出来。

 

进入doCreateBean方法

Spring bean到底是如何创建的?(上)(三)-开源基础软件社区

进入createBeanInstance方法,对象就在这个方法创建的

Spring bean到底是如何创建的?(上)(三)-开源基础软件社区

文章转自公众号:三友的java日记

已于2022-6-15 17:12:38修改
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐