springboot详细启动过程

简介: springboot详细启动过程

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.class, args);
    }
}

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 的应用变得更加简单和快速。

相关文章
|
XML Java 数据格式
SpringBoot的启动过程
启动详解 SpringBoot的启动分为两个部分: 构造SpringApplication 执行run方法 构造SpringApplication 我们先来整体看看: 加入我们当前启动类如下: 可以发现大致做了以下几件事: 设置BeanDefinition的主源 推断应用类型 设置ApplicationContext 初始化器 设置监听器 推断著主启动类 接下来我们详细的看看每一个步骤: 第一步:记录 BeanDefinition 源 大家知道我们的Spring容器刚开始内部的BeanFactory是空的,它要从各个源头去寻找BeanDefinition, 这些源有可能来自
98 1
|
1月前
|
消息中间件 缓存 Java
手写模拟Spring Boot启动过程功能
【11月更文挑战第19天】Spring Boot自推出以来,因其简化了Spring应用的初始搭建和开发过程,迅速成为Java企业级应用开发的首选框架之一。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,帮助读者深入理解其工作机制。
42 3
|
4月前
|
设计模式 缓存 Java
深入Spring Boot启动过程:揭秘设计模式与代码优化秘籍
深入Spring Boot启动过程:揭秘设计模式与代码优化秘籍
|
6月前
|
监控 Java Spring
深入理解Spring Boot的启动过程
深入理解Spring Boot的启动过程
|
7月前
|
XML Java 开发者
springboot 启动原理、启动过程、启动机制的介绍
【5月更文挑战第13天】Spring Boot 是一种基于 Java 的框架,用于创建独立的、生产级别的 Spring 应用程序。它的主要目标是简化 Spring 应用的初始搭建和开发过程,同时提供一系列大型项目常见的非功能性特征(如嵌入式服务器、安全性、度量、健康检查和外部化配置)。
499 3
|
Java
如何在SpringBoot启动过程中,进行自定义操作?
如何在SpringBoot启动过程中,进行自定义操作?
70 0
|
搜索推荐 Java 应用服务中间件
SpringBoot(一):springboot应用程序启动过程核心分析
说起**springboot**大家很容易想到的就是**自动装配**、**约定大于配置**这个特点,的确这是springboot相比较于普通的**spring** web项目最大的亮点。
92 1
|
Java 容器 Spring
Spring Boot启动过程
Spring Boot启动过程
99 0
|
Java 测试技术 容器
全网最详细的介绍SpringBoot启动过程源码分析
上一篇我们介绍了SpringBoot的自动装配的知识,这一篇我们将介绍SpringBoot最核心的知识点,SpringBoot应用的启动过程。这个启动过程比较复杂,在此我只介绍核心的知识点。其启动过程大概分为两步。1. 初始化SpringApplication对象,2.执行SpringApplication对象的run方法。
163 0
全网最详细的介绍SpringBoot启动过程源码分析
|
Java
SpringBoot项目启动过程中做数据资源初始化的方式
SpringBoot项目启动过程中做数据资源初始化的方式
516 0
下一篇
DataWorks