面向小白的SpringBean的知识梳理

152 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

Bean的装配

spring bean的核心原理:BeanFactory ->ApplicationContext,通过解析xml配置文件的方式来加载配置Bean对象。

Bean的加载设计过程

image.png 从图中可以看出,绿色的部分都是它初始化的过程,初始化结束之后就可以使用了,然后销毁是红色部分。

那么Spring的Bean加载为何设计这么复杂呢?因为这个Bean可以是多元化的,Spring为了管理各种多元化的对象,不管是一个Server、还是强依赖的某些对象,又或者是一个I/O操作,Spring都要把它们管理起来。

Bean的加载实现细节

image.png

从图中可以看出,绿色的部分都是它初始化的过程,初始化结束之后就可以使用了,然后销毁是红色部分,这里展示的是Spring具体的抽象细节。

这里可以类比类的加载和初始化。

Bean的加载实现源码解析

接下来我们跟一下源码:我们找到doCreateBean()方法: 接下来,我们对照这段代码进行解析: image.png

这是调用构造方法创建对象的,这里有个判断,如果没有对象,才创建。 image.png

其它的先不看,有兴趣同学可以自行解析,接着我们看对象属性的初始化:

这里是对对象属性进行赋值,然后调用初始化Bean的方法。 image.png

初始化Bean的方法里面呢,调用了这个invokeAwareMethods()方法,然后调用了我们的前置处理器。

image.png

紧接着,调用了我们的初始化方法,后置处理器,然后返回。

image.png

最后,用完了销毁,注册了一个回调接口

image.png

SpringBean配置方式

Xml文件配置

Xml文件配置涉及技术

schema约束:这个是配置xml的关键技术,它的格式呢和Json格式类似,但是比Json更复杂,因为Json表示不了那么丰富的数据类型。

schema约束是用来定义xml文件格式的,最外层什么属性,里面有哪些属性,叫什么名字,有什么数据类型,嵌套了哪些属性等等。

xml格式的定义呢有两种技术xsd和dtd,Spring使用的是xsd技术。

Xml相关的Spring内部实现

Spring内部呢,有两个需要提到的实现,一个就是Spring把各种Xml文件的定义统一的汇总到这个Spring.Schemas当中,另外一个就是Spring把对Xml文件的处理呢都封装到这个各自的Handler中,就是Spring.handler。