Spring Boot启动流程

① 应用程序启动时,会创建一个`SpringApplication对象,并调用其run方法

②SpringApplication的构造函数中有一个|nitialize方法,这个Initiate方法初始化SpringApplication对象:

**1.添加源:**将提供的源(通常是配置类)添加到应用的源列表中。

**2.设置 Web 环境:**判断应用是否应该运行在 Web 环境中,这会影响后续的 Web 相关配置。

**3.加载初始化器:**从 spring.factories 文件中加载所有列出的 ApplicationContextInitializer 实现,并将它们设置到 SpringApplication实例中,以便在应用上下文的初始化阶段执行它们。

**4.设置监听器:**加载和设置 ApplicationListener 实例,以便应用能够响应不同的事件。

**5.确定主应用类:**确定主应用类,这个主应用程序类通常是包含 public static void main(String[]arg5)方法的类,是启动整个Spring Boot 应用的入口点。

其中第三步,加载初始化器是Springboot的自动配置 的核心,从Spring,factories文件中加载并实例化指定类型的类.

③所有关键设置都就绩后就开始启动

1.**调用run方法启动&停止计时器:**在代码中,用到stopWatch来进行计时,所以在最开始先要启动计时,在最后要停止计时。这个计时就是最终用来统计启动过程的时长的。最终在应用启动信息输出的实时打印出来

**2.获取和启动监听器:**这一步从spring.factories中解析初始所有的SpringApplicationRunListener 实例,并通知他们应用的启动过程已经开始。

**3.装配环境参数:**这一步主要是用来做参数绑定的,prepareEnvironment方法会加载应用的外部配置。这包括application.properties 或 application.yml文件中的属性,环境变量,系统属性等。所以,我们自定义的那些参数就是在这一步被绑定的。

**4.打印Banner:**这一步的作用很简单,就是在控制台打印应里的启动横幅Banner,如以下内容

**5.创建应用上下文:**到这一步就真的开始启动了,第一步就是先要创建一个Spring的上下文出来,只有有了这个上下文才能进行Bean的加载、配置等工作。

**6.准备上下文:**这一步非常关键,很多核心操作都是在这一步完成的,例如打印启动日志

**7.刷新上下文:**这一步,是Spring启动的核心步骤,这一步骤包括了实例化所有的 Bean、设置它们之间的依赖关系以及执行其他的初始化任务。

8.创建Tomcat Server 并启动

相关推荐
鹅是开哥13 小时前
Spring AI Alibaba + DashScope 调用超时彻底解决(SocketTimeoutException / read timeout)
java·人工智能·spring
Myosotis51313 小时前
作业 第三次
开发语言·python
学编程的闹钟13 小时前
C语言WSAGetLastError函数
c语言·开发语言·学习
毕设源码-钟学长13 小时前
【开题答辩全过程】以 基于springboot网络游戏账号租赁以及出售系统为例,包含答辩的问题和答案
java·spring boot·后端
阿里嘎多学长13 小时前
2026-02-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管
vx+_bysj686913 小时前
【免费领源码】基于Springboot白隼校园音乐点歌系统 计算机毕业设计项目推荐上万套实战教程JAVA,node.js,C++、python、大屏数据可视化
java·spring boot·mysql·课程设计
C雨后彩虹13 小时前
跨线程数据传递InheritableThreadLocal的原理
java·多线程·同步·异步·threadlocal
Ronin30513 小时前
虚拟机数据管理模块
开发语言·c++·rabbitmq
熬了夜的程序员13 小时前
【LeetCode】117. 填充每个节点的下一个右侧节点指针 II
java·算法·leetcode
3GPP仿真实验室13 小时前
【Matlab源码】6G候选波形:MIMO-OFDM-IM 增强仿真平台
开发语言·网络·matlab