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

相关推荐
重生之后端学习22 分钟前
208. 实现 Trie (前缀树)
java·开发语言·数据结构·算法·职场和发展·深度优先
Sayuanni%324 分钟前
初阶_多线程2(线程安全)
java
Howie Zphile26 分钟前
# 组织增熵与全面预算管理的持续优化
java·大数据·数据库
琢磨先生David26 分钟前
有了AI,还需要学Springboot吗?
人工智能·spring boot·后端
我命由我1234528 分钟前
C++ EasyX 开发,MessageBox 函数参数问题:“const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容
c语言·开发语言·c++·后端·学习·visualstudio·visual studio
芒克芒克30 分钟前
深入浅出BlockingQueue(二)
java
识君啊30 分钟前
Java 栈 - 附LeetCode 经典题解
java·数据结构·leetcode·deque··stack·lifo
shehuiyuelaiyuehao33 分钟前
关于hashset和hashmap,还有treeset和treemap,四个的关系
java·开发语言
马尔代夫哈哈哈34 分钟前
Spring AOP
java·后端·spring
only-qi35 分钟前
Java 包装器模式:告别“类爆炸“
java·开发语言