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

相关推荐
不才不才不不才12 小时前
Spring 源码系列(17): HandlerMapping 与 HandlerAdapter 两大体系
java·后端·spring
Seven9712 小时前
AI杂谈:别再问AI会不会替代你,先看你是不是驾驶员
人工智能·后端
lisin-lee-cooper12 小时前
JVM知识体系
java·jvm
ERD Online12 小时前
我们怎么设计 good first issue:让第一个 PR 两小时内合入
数据库·git·后端·开源·issue
(轻舟已过万重山)12 小时前
第40章 Spring AI 实战:企业级 AI 应用架构
人工智能·spring·架构
IT_陈寒12 小时前
Vite热更新失效?我的几个犯傻操作害我debug两小时
前端·人工智能·后端
凤山老林12 小时前
Spring Boot 大文件处理实战:分片上传、断点续传与 OSS 集成
java·spring boot·后端·大文件上传·分片上传·断点续传
敲个大西瓜13 小时前
JAVA 并发编程
java·并发编程
卷无止境13 小时前
Python 依赖管理这件事,到底该看哪个文件
后端·python
vHelios13 小时前
【电商项目】商品服务模块的问题解决与代码逻辑思考
java·sql·mybatis