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

相关推荐
better_liang2 分钟前
每日Java面试场景题知识点之-Redisson热门使用场景
java·redis·微服务·分布式锁·redisson·分布式系统
2301_792674866 分钟前
java学习 day26
java
so2F32hj26 分钟前
拆解 OpenHands(14)--- Microagents
java·开发语言
明灯伴古佛11 分钟前
面试:什么是可重入性?为什么 synchronized 是可重入锁?
java·jvm·面试
卓怡学长15 分钟前
m307自习室预订座位管理分析与实现
java·spring boot·spring
Arya_aa21 分钟前
生猪养殖溯源系统前期准备与SpringBoot框架
java·spring boot
Full Stack Developme37 分钟前
Java Simple Serial Connector 教程
java·stm32·单片机
xcs1940539 分钟前
Java 上位机防空警报系统开发
java·开发语言
sR916Mecz41 分钟前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
java·linux·服务器
UAq6wn76j1 小时前
.NET源码生成器使用SyntaxTree生成代码及简化语法
java·开发语言·.net