Spring的启动过程

通常,我们说的Spring启动,就是构造ApplicationContext对象以及调用refresh()方法的过程。首先,Spring启动过程主要做了这么几件事情:

  1. 构造一个BeanFactory对象(DefaultListableBeanFactory)

  2. 解析配置类,得到BeanDefinition,并注册到BeanFactory中

i. 解析@ComponentScan,此时就会完成扫描

ii. 解析@Import

iii. 解析@Bean

iv. 解析其他配置信息

  1. 因为ApplicationContext还支持国际化,所以还需要初始化MessageSource对象

  2. 因为ApplicationContext还支持事件机制,所以还需要初始化ApplicationEventMulticaster对象

  3. 把用户定义的ApplicationListener对象添加到ApplicationContext中,等Spring启动完了就要发布事件了

  4. 创建非懒加载的单例Bean对象,并存在BeanFactory的单例池中。

  5. 调用Lifecycle Bean的start()方法

  6. 发布ContextRefreshedEvent事件

相关推荐
oak隔壁找我5 小时前
MySQL中 SHOW FULL PROCESSLIST` 输出中 `State` 列的所有可能值
后端
上进小菜猪6 小时前
基于 YOLOv8 的面向文档智能处理的表格区域检测系统 [目标检测完整源码]
后端
oak隔壁找我6 小时前
JVM常用调优参数
java·后端
IT_陈寒10 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
晨星shine10 小时前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
蝎子莱莱爱打怪10 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
倚栏听风雨11 小时前
【ES避坑指南】明明存的是 "CodingAddress",为什么 term 查询死活查不到?彻底搞懂 text 和 keyword
后端
程序员爱钓鱼11 小时前
Go 操作 Windows COM 自动化实战:深入解析 go-ole
后端·go·排序算法
回家路上绕了弯11 小时前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
子玖11 小时前
实现微信扫码注册登录-基于参数二维码
后端·微信·go