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

相关推荐
Jinkxs几秒前
Java 架构 02:DDD 领域模型设计实战(限界上下文划分)
java·开发语言·架构
+VX:Fegn0895几秒前
计算机毕业设计|基于springboot + vue旅游信息推荐系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计·旅游
百锦再3 分钟前
国产数据库的平替亮点——关系型数据库架构适配
android·java·前端·数据库·sql·算法·数据库架构
码界奇点7 分钟前
基于SpringBoot和Vue的Fuint门店会员营销系统设计与实现
vue.js·spring boot·后端·毕业设计·springboot·源代码管理
爱笑的眼睛1112 分钟前
文本分类的范式演进:从统计概率到语言模型提示工程
java·人工智能·python·ai
周杰伦_Jay25 分钟前
【Go/Python/Java】基础语法+核心特性对比
java·python·golang
sszdlbw27 分钟前
后端springboot框架入门学习--第一篇
java·spring boot·学习
小鹿学程序30 分钟前
jdk配置完之后java -version还是默认的jdk版本如何更改
java·开发语言·python
她说彩礼65万33 分钟前
C# 反射
java·算法·c#
用户990450177800935 分钟前
ruoyi-vue2集成DMN规则引擎实现Dish出餐决策
后端