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

相关推荐
indexsunny7 分钟前
互联网大厂Java求职面试实录:Spring Boot微服务在电商场景中的应用及技术深度解析
java·数据库·spring boot·缓存·微服务·面试·电商
夏幻灵7 分钟前
Java中的this关键字解析与应用
java·开发语言·python
移幻漂流8 分钟前
JNI的本质解析:Android Framework视角下的Java-Native衔接机制
android·java·开发语言
仙俊红10 分钟前
Spring Cloud 核心组件部署方式速查表
后端·spring·spring cloud
猿小羽11 分钟前
Spring AI + MCP 实战:构建下一代智能 Agent 应用
java·spring boot·llm·ai agent·spring ai·mcp·model context protocol
浪客川18 分钟前
1972 GODOT 入门案例
android·java·godot
乂爻yiyao26 分钟前
HotSpot 内存区域详解
java·jvm
梵高的代码色盘27 分钟前
Spring AI 整合大模型:Prompt 提示词的标准化设计与最佳实践
人工智能·spring·prompt
独自破碎E28 分钟前
【双指针】反转字符串
java·开发语言
时艰.30 分钟前
JVM 垃圾收集器ParNew&CMS与三色标记算法
java·jvm·算法