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

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

 

@Bean的构建方式、构造器注入创建对象的方式,这两个创建的细节就不研究了

Spring bean到底是如何创建的?(上)(四)-鸿蒙开发者社区

通过带构造参数的实例化构造方法来实例化我们就不看了。那么就进入instantiateBean方法

Spring bean到底是如何创建的?(上)(四)-鸿蒙开发者社区

从这里可以看出,不论怎么走,都是通过getInstantiationStrategy方法获取实例化对象的策略然后调用instantiate来实例化对象。点进getInstantiationStrategy方法会发现其实是获取的CglibSubclassingInstantiationStrategy,那么我们就进入instantiate方法

Spring bean到底是如何创建的?(上)(四)-鸿蒙开发者社区

这里我们可以看出,其实是获得了class的默认构造器,然后调用BeanUtils.instantiateClass(constructorToUse)来实例化对象,这是这内部就是简单的反射调用构造器创建对象。就不点进去了。

 

其实从这里我们可以看出,其实spring在创建对象实例的时候,最简单的方式其实就是通过反射直接通过调用的构造方法进行实例化。其实spring对象的实例化还有其他的方式,比如我上面图片标注的@Bean的构建方式、构造器注入创建对象的方式都不是走这。

 

在后面就是对创建创建出来的对象包装成BeanWrapper对象,直接返回。至此,bean的对象就被实例化出来了。

 

d. bean 的实例化之后阶段

 

接着往下看。

Spring bean到底是如何创建的?(上)(四)-鸿蒙开发者社区

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

已于2022-6-15 17:12:32修改
收藏
回复
举报
回复
    相关推荐