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事件

相关推荐
AskHarries13 小时前
SEO 页面怎么生成
后端
爱吃牛肉的大老虎13 小时前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
石榴13 小时前
NestJS 的请求到底经过了什么:装饰器、守卫、拦截器、管道与中间件如何配合
后端
bbq粉刷匠13 小时前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法
Gopher_HBo13 小时前
moby-client客户端
后端
Sam_Deep_Thinking13 小时前
一个靠谱的C端网关服务应该包含什么内容
java·程序员·系统架构
杨运交14 小时前
[055][调度模块]Spring动态任务调度框架的设计与实现
java·后端·spring
白狐_79814 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
流云鹤14 小时前
03Java学习day(3)
java·学习
tqs_1234514 小时前
Agent智能体+Skill插件引擎+Milvus混合检索 技术沉淀
java·python·milvus