spring源码学习笔记

**

总体流程图

**

请添加图片描述

三级缓存

在这里插入图片描述三级缓存的精讲
**

容器和对象的创建流程

**
在这里插入图片描述先创建容器 然后通过BeanDefinitionReader来生成一个BeanDefinition(Bean定义信息)对象
在这里插入图片描述

配置文件读取过程

在这里插入图片描述填充属性是set方法 Java不在初始化方法中给属性赋值
在这里插入图片描述IOC bean的生命周期

Aware接口的作用

在这里插入图片描述实现接口之后可以重写set方法,来给属性赋值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述setConfigLocations是设置配置文件路径,加载路径两种方式:1.配置文件2.Resource

refresh方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.prepareRefresh

在这里插入图片描述

①.设置开启时间

②.设置活跃状态(原子状态标志位)为true关闭为FALSE

在这里插入图片描述

③.获取Environment对象,并加载当前系统的属性值到Environment对象中

在这里插入图片描述if判断中earlyApplicationListeners是与刷新之前的集合,而applicationListeners是程序运行过程中的集合

prepareRefresh() 中getEnvironment内部有super构造方法进行了一些对象的初始化

④.设置一些监听器和事件的集合对象,默认为空的集合

在这里插入图片描述

2.obtainFreshBeanFactory 获得一个刷新的Bean容器

在这里插入图片描述
createBeanFactory中设置了许多属性和初始化了许多对象

customizeBeanFactory定制化BeanFactory可以设置属性,包括allowBeanDefinitionOveriding和allowCircularReferences

进入到这个方法每次创建的都是一个新的工厂,每个容器都具有唯一的一个ID标识

loadBeanDefinitions

在这里插入图片描述适配器模式

bean的定义信息刚开始是存在工厂中的,对于当前给定的BeanFactory对象创建出一个新的XmlBeanDefinitionReader对象,XmlBeanDefinitionReader对象完成整体属性资源的加载过程
在这里插入图片描述setEntityResolver用来读取本地的xsd和dtd文件来完成相关的解析工作(读取本地文件库)

如果一些对象需要在控制台显示出来需调用它的toString方法,例如这里的getSchemaMappings
在这里插入图片描述在这里插入图片描述先读取该配置文件,然后就知道了xsd文件映射到本地的哪些目录,后续解析匹配不需要从网络上寻找配置资源

3.prepareBeanFactory

完成Bean工厂的初始化操作,设置属性值

4.PostProcessBeanFacory

方便后续扩展

5. invokeBeanFactoryPostProcessors

实例化并且开始执行BFPP操作

6. registerBeanPostProcessor (6-10实例化之前准备工作)

实例化并且注册所有的 BeanPostProcessor

7.initMessageSource

初始化消息资源 (国际化 语言切换)I18N

8.initApplicationEventMulticaster

初始化广播器(多播器)

9.onRefresh

扩展化实现

10.registerListeners

注册监听器

11.finishBeanFactoryInitialization(beanFactory)

实例化所有的剩下的非懒加载的单例对象

12.finishRefresh

完成整体的刷新
在这里插入图片描述

13.resetCommonCaches

重置缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值