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

相关推荐
孫治AllenSun2 分钟前
【MDC】使用 MDC 封装一个 LogMdcUtil 工具类
java·spring boot·后端
神奇小汤圆7 分钟前
Java 26正式发布!这3个新特性,让代码量直接减半
后端
再吃一根胡萝卜16 分钟前
一亿数据下,如何实时统计“业务员业绩 TOP 10”?别再 GROUP BY 了
后端
plainGeekDev17 分钟前
依赖管理 → Version Catalog
android·java·kotlin
Oneslide26 分钟前
systemd-journald 使用与配置指南
后端
神奇小汤圆27 分钟前
30分钟实现自己的AI聊天机器人(SpringBoot接入DeepSeek API)
后端
再吃一根胡萝卜44 分钟前
从最左前缀到地址索引:我对 MySQL 索引的一次完整复盘
后端
郡杰44 分钟前
Spring Boot 请求流转与 RESTful
后端
再吃一根胡萝卜1 小时前
Redis 都有哪些用处?都会用在什么地方?
后端
再吃一根胡萝卜2 小时前
分布式与分布式锁:从访问量到数据一致性
后端