01 Spring 源码总结 - refresh整体概述

本文深入剖析了Spring容器从启动到完成初始化的详细步骤,包括prepareRefresh、obtainFreshBeanFactory、beanFactory的配置、BeanPostProcessor的注册、事件监听器的初始化等关键环节,涉及配置加载、bean定义解析、对象实例化、依赖注入等多个核心流程。
摘要由CSDN通过智能技术生成

01 prepareRefresh

容器刷新前的准备工作

  1. 设置容器的启动时间
  2. 设置活跃状态为true
  3. 设置关闭状态为false
  4. 获取Environment对象,并加载当前系统的属性值到Environment对象中
  5. 准备监听器和事件的集合对象,默认为空的集合

02 obtainFreshBeanFactory

创建容器,并且完成配置文件的加载

  1. 创建 DefaultListableBeanFactory 容器对象
  2. 完成配置文件的加载
  3. 将配置文件解析成文档对象
  4. 根据文档的节点信息封装成一个个的 BeanDefinition 对象并放入容器

流程图
在这里插入图片描述
代码流程图
在这里插入图片描述

03 prepareBeanFactory

beanFactory 的准备工作,对 beanFactory 各种属性进行填充
如表达式的解析策略、属性编辑注册器等

04 postProcessBeanFactory

默认没有实现,留给子类进行实现操作

05 invokeBeanFactoryPostProcessors

执行 BFPP 接口中的方法

02 Spring 源码总结 - invokeBeanFactoryPostProcessors()
03 Spring 源码总结 - ConfigurationClassPostProcessor

06 registerBeanPostProcessors

注册BeanPostProcessors
04 Spring 源码总结 - registerBeanPostProcessors()

07 initMessageSource

为上下文初始化 message 源,即不同语言的消息体,国际化处理

08 initApplicationEventMulticaster

初始化事件广播器
05 Spring 源码总结 - 事件监听

09 onRefresh

在 spring 中默认没有任何实现,留给子类来初始化其他的bean

10 registerListeners

注册 listener bean 到消息广播器中
05 Spring 源码总结 - 事件监听

11 finishBeanFactoryInitialization

完成所有非懒加载的单例对象的实例化操作,此方法开始进行对象的创建,包含实例化,初始化,循环依赖,AOP等核心逻辑处理
流程图

在这里插入图片描述
06 Spring 源码总结 - 循环依赖
07 Spring 源码总结 - 创建Bean

12 finishRefresh

完成整个容器的启动,所有的对象都准备完成,可以进行后续业务流程的操作,清除上下文缓存,初始化生命周期处理器,发送刷新完成事件

13 resetCommonCaches

清空运行过程中产生的缓存

14 全体系图解

Spring全体系图解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值