springboot详细启动过程

本文详细解析了SpringBoot应用的启动流程,包括main方法的入口、SpringApplication的运行步骤、ApplicationContext的初始化、环境准备、应用初始化和监听器执行等内容,强调了其在简化Spring应用开发中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

Spring Boot 启动过程详解

Spring Boot 是一个用于快速开发独立的、生产级别的基于 Spring 框架的应用的工具。它简化了基于 Spring 的应用开发,特别是微服务的开发。下面是 Spring Boot 应用的启动过程的详细解析。

1. main 方法入口

一切从 main 方法开始。Spring Boot 应用的入口点是包含 main 方法的类,该类通常使用 @SpringBootApplication 注解标记。

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.classargs);
    }
}

2. SpringApplication.run()

SpringApplication.run() 是启动 Spring Boot 应用的核心。它执行了以下关键步骤:

2.1 创建 SpringApplication 对象

首先,它会创建一个新的 SpringApplication 实例。这个实例负责管理应用的启动。

2.2 推断应用的类型

Spring Boot 会推断应用是普通的 Spring 应用还是 Web 应用(Servlet 或 Reactive 类型)。

2.3 初始化 ApplicationContext

根据应用的类型,Spring Boot 会选择创建一个合适的 ApplicationContext 实例(例如 AnnotationConfigApplicationContextAnnotationConfigServletWebServerApplicationContext)。

2.4 准备环境

Spring Boot 会准备 Environment,用于配置应用。这包括读取配置文件、系统属性、环境变量等。

2.5 应用初始化器

应用初始化器 ApplicationContextInitializer 会被调用,它们可以在 ApplicationContext 被刷新之前对其进行进一步的设置或处理。

2.6 执行监听器

各种事件监听器 ApplicationListener 会被触发,以响应不同的应用生命周期事件。

2.7 加载源

SpringApplication 会加载应用的主配置类(通常是使用 @SpringBootApplication 注解的类)。

2.8 刷新 ApplicationContext

ApplicationContext 会被刷新,这将导致 Spring 容器加载所有的单例 beans。

2.9 执行命令行运行器

如果有的话,CommandLineRunnerApplicationRunner beans 会被执行。

2.10 启动内嵌服务器

如果是 Web 应用,Spring Boot 会启动内嵌的服务器(比如 Tomcat、Jetty 或 Undertow)。

2.11 应用准备完成

最后,ApplicationReadyEvent 会被发布,表示应用已经准备好接受请求。

3. 应用运行

此时,Spring Boot 应用已经启动并且运行中。它会持续运行,直到被关闭或者遇到中断。

4. 应用关闭

当应用关闭时,ApplicationContext 会被关闭,这会导致 ContextClosedEvent 事件的发布。所有的标准清理步骤,如调用 DisposableBeandestroy 方法和关闭日志系统,都会在这个阶段执行。


以上就是 Spring Boot 应用的启动过程的详细解析。这个过程涉及了许多 Spring 框架的核心概念,如依赖注入、事件发布、环境抽象等。通过这个过程,Spring Boot 使得启动和运行基于 Spring 的应用变得更加简单和快速。

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员朱永胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值