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

相关推荐
鹿角片ljp2 分钟前
Java框架篇:Spring + SpringMVC + SpringBoot + MyBatis深度复习
java·开发语言
董员外10 分钟前
RAG 系统进化论(七):Multimodal RAG(多模态 RAG),当知识存在于表格、图片和页面中
人工智能·后端·设计模式
Lyra_Infra17 分钟前
Java 应用启动脚本 JDK 路径适配优化文档
java·shell
用户6676750937919 分钟前
Java 是如何操作Redis的?从 Spring Data Redis中RedisTemplate 源码分析 ZSet 调用链
后端
ruleslol1 小时前
如何解决 Spring 中的循环依赖问题?
spring
CodeHackerBhx1 小时前
Spring Boot 4 防重复提交:从接口幂等到 Redis 分布式锁的完整实践
java·数据库·spring boot·redis·分布式
凌虚1 小时前
Kubernetes 编年史:从 Borg 到云原生操作系统
后端·程序员·kubernetes
八角.。1 小时前
方法参数与Debug按键
java·开发语言·jvm
BerryS3N1 小时前
Java在人工智能与大模型时代的深度演进:从工程落地、高性能计算到企业级Agent与RAG架构实战指南
java·人工智能·架构
蔬菜_2 小时前
前端转全栈-day2(修饰符)
java