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

相关推荐
lewis_lk13 小时前
docker-compose部署mysql&redis
后端·docker
菜鸟233号13 小时前
力扣474 一和零 java实现
java·数据结构·算法·leetcode·动态规划
天天摸鱼的java工程师13 小时前
工作中七天免登录如何实现
java·后端
小杨同学4913 小时前
C 语言实战:水果总价计算程序(结构体应用 + 细节优化)
后端·算法·程序员
q***441513 小时前
Java性能优化实战技术文章大纲Java性能优化的核心目标与原则
java·开发语言·性能优化
用户9483570165113 小时前
《自动化埋点:利用 AOP 统一记录接口入参、出参及执行耗时》
后端
undsky13 小时前
【RuoYi-SpringBoot3-Pro】:多租户功能上手指南
spring boot·后端·mybatis
明天有专业课13 小时前
松耦合的设计模式-观察者
后端
毕设源码-郭学长13 小时前
【开题答辩全过程】以 基于springbootvue图书馆选座系统设计与实现为例,包含答辩的问题和答案
java
鱼跃鹰飞13 小时前
怎么排查线上CPU100%的问题
java·jvm·后端