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

相关推荐
零度@2 分钟前
Java 消息中间件 - RabbitMQ 全解(保姆级 2026)
java·rabbitmq·java-rabbitmq
u0104058362 分钟前
企业微信自建应用权限模型与 RBAC 在 Spring Security 中的映射
java·spring·企业微信
墨雨晨曦882 分钟前
通过调用deepseek的api来实现智能客服
java
予枫的编程笔记4 分钟前
Elasticsearch核心架构与基础原理:解密其极速性能的底层逻辑
java·大数据·人工智能·elasticsearch·搜索引擎·架构·全文检索
Seven976 分钟前
数据结构-图
java
Yu_iChan8 分钟前
苍穹外卖Day09 地址簿模块
java·数据库·mybatis
Java天梯之路8 分钟前
Spring Boot 钩子全集实战(五):ApplicationContextInitializer详解
java·spring boot·后端
后端小张10 分钟前
【AI 学习】AI提示词工程:从入门到实战的全栈指南
java·人工智能·深度学习·学习·语言模型·prompt·知识图谱
BingoGo10 分钟前
PHP 8.5 #[\NoDiscard] 揪出"忽略返回值"的 Bug
后端·php