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

相关推荐
may_一一13 小时前
docker安装的redis状态一直是restarting
java·redis·docker
zhangyifang_00913 小时前
Spring中的SPI机制
java·spring
侠***I14 小时前
探索三菱 FX 系列 C# 上位机源码之旅
spring
han_hanker14 小时前
这里使用 extends HashMap<String, Object> 和 类本身定义变量的优缺点
java·开发语言
careathers14 小时前
【JavaSE语法】面向对象初步认识
java·面向对象
coding随想14 小时前
掌控选区的终极武器:getSelection API的深度解析与实战应用
java·前端·javascript
嵌入式小能手14 小时前
飞凌嵌入式ElfBoard-文件I/O的深入学习之存储映射I/O
java·前端·学习
LucianaiB14 小时前
从 0 到 1 玩转 N8N——初识 N8N(入门必看)
后端
ChinaRainbowSea14 小时前
github 仓库主页美化定制
java·后端·github
程序猿小蒜15 小时前
基于springboot的医院资源管理系统开发与设计
java·前端·spring boot·后端·spring