Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >springboot详细启动过程

springboot详细启动过程

作者头像
程序员朱永胜
发布于 2024-01-09 06:13:19
发布于 2024-01-09 06:13:19
26400
代码可运行
举报
运行总次数:0
代码可运行

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

Spring Boot 启动过程详解

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

1. main 方法入口

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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 的应用变得更加简单和快速。

本文由 mdnice 多平台发布

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
springboot 启动原理、启动过程、启动机制的介绍
Spring Boot 是一种基于 Java 的框架,用于创建独立的、生产级别的 Spring 应用程序。它的主要目标是简化 Spring 应用的初始搭建和开发过程,同时提供一系列大型项目常见的非功能性特征(如嵌入式服务器、安全性、度量、健康检查和外部化配置)。以下是 Spring Boot 的一些核心原理:
小马哥学JAVA
2024/05/13
2K0
SpringBoot的启动流程是怎样的?SpringBoot源码(七)
本篇接 SpringBoot内置的各种Starter是怎样构建的? SpringBoot源码(六)
源码笔记
2020/03/23
1.1K0
SpringBoot的启动流程是怎样的?SpringBoot源码(七)
SpringBoot源码篇(二)启动过程
对于注解@SpringBootApplication不会再进行说明,重点是 SpringApplication.run(App.class);,从SpringMvc到Spring Boot,通过主程序便可以启动web服务,所以在这个方法中,有启动tomcat的步骤,但初始化spring容器和servlet容器是否还是和tomcat+SpringMvc一样?
用针戳左手中指指头
2022/11/16
5700
SpringBoot源码篇(二)启动过程
Spring Boot启动过程分析
首先贴一张很不错的图,SpringBoot启动结构图,图片出自SpringBoot启动流程解析。 本文的分析基于Spring Boot 2.1.5,非Spring的代码只有下面这个启动main函数:
爱撸猫的杰
2020/03/08
1.1K0
Spring Boot启动过程分析
浅谈springboot启动过程
spring最核心的功能无非是ioc容器,这个容器里管理着各种bean。ioc容器反映在java类上就是spring的核心类ApplicationContext。ApplicationContext有众多的子接口和子类,不同的实现类有不同的功能。比如ClassPathXmlApplicationContext支持从xml读取bean定义并注册到容器中,AnnotationConfigApplicationContext支持读取@Configuration、@Service等注解定义的bean。
用户4844014
2023/05/02
3100
9千字长文带你了解SpringBoot启动过程–史上最详细 SpringBoot启动流程-图文并茂
来自面试官发自内审深处的灵魂拷问:“说一下springboot的启动流程”; 一脸懵逼的面试者:“它简化了spring的配置,主要是因为有自动装配的功能,并且可以直接启动,因为它内嵌了tomcat容器”; 面试官:“嗯, 没错,这是 它的一些概念,你还没回答我的问题,它是怎么启动的,启懂时都经过了哪些东西?”; 一脸懵逼的面试者:“额~~~不知道额····,我用的很熟练,但是不知道它里面做了哪些事情!”; 面试官:“了解内部原理是为了帮助我们做扩展,同时也是验证了一个人的学习能力,如果你想让自己的职业道路更上一层楼,这些底层的东西你是必须要会的,行吧,你回去等消息吧!” 面试者:↓
全栈程序员站长
2022/10/01
14.4K0
9千字长文带你了解SpringBoot启动过程–史上最详细 SpringBoot启动流程-图文并茂
SpringBoot(一):springboot应用程序启动过程核心分析
说起springboot大家很容易想到的就是自动装配、约定大于配置这个特点,的确这是springboot相比较于普通的spring web项目最大的亮点。
用户2031163
2023/08/27
3110
spring boot启动过程
springboot的启动类我们一般都会加上SpringBootApplication注解,其实他是几个注解的集合
earthchen
2020/09/24
2.1K0
手写模拟Spring Boot启动过程功能
——https://cloud.tencent.com/developer/article/2466203
小马哥学JAVA
2024/11/18
1580
从 SpringApplication 认识 Spring 应用启动过程
BootstrapRegistryInitializer:回调接口,用于 BootstrapRegistry 初始化。
WindWant
2023/06/18
6130
Spring Boot 2.0 教程 - 深入SpringAplication
可以通过SpringApplication.run() 方法轻松的启动一个Spring应用,例如
代码拾遗
2018/07/24
4890
头秃系列,二十三张图带你从源码分析Spring Boot 启动流程~
Spring Boot 专栏已经写了五十多天了,前面二十章从基础应用到高级整合避重就轻介绍的都是工作、面试中常见的知识点。
Bug开发工程师
2020/12/15
2.2K0
头秃系列,二十三张图带你从源码分析Spring Boot 启动流程~
Spring Boot(6) 原理和启动流程四、ApplicationContextInitializer、ApplicationContextAware、ApplicationContext、App
SpringBoot是一个快速开发框架,目的是解放java程序猿的生产力,提高开发效率。主要特点: 1、整合依赖:通过Maven,快速的将一些常用的第三方依赖整合。 2、简化配置:简化XML配置,全部采用注解形式。 3、集成web容器:内置Http服务器(Jetty和Tomcat),最终以java应用程序进行执行。 简化Spring应用的创建、运行、调试、部署的工作,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。
黄规速
2022/04/14
1.6K0
Spring Boot(6) 原理和启动流程四、ApplicationContextInitializer、ApplicationContextAware、ApplicationContext、App
SpringBoot 系列-启动过程分析
小伙伴们,大家好!昨天因为操作失误,所以没有更新成功。在这个澳门回归20周年的今天,我继续更新SpringBoot 系列的第二篇,上次文章还没看的小伙伴,可以点击查看:《SpringBoot 系列-FatJar 启动原理》。
安徽开发者圈
2020/03/02
8440
SpirngBoot | 启动原理 01
一个读者,大二学生,常泡酒吧,逃课无数,就这还写得一手好代码,酸了酸了。这是他投稿的一篇关于 SpringBoot 启动原理的文章,才大二就如此优秀,未来可期。
JavaFish
2019/10/17
3450
重学SpringBoot3-事件与监听器
Spring Framework 提供了一个强大的事件发布和监听机制,允许应用组件在发生特定操作时相互通信,而无需直接引用对方。这种基于事件的通信方式有助于实现松耦合的架构,增强应用的模块化。Spring Boot 3 0继承并增强了这一机制,让开发者能够更便捷地使用事件和监听器来处理应用中的各种业务场景。本文将深入探讨Spring Boot 3中的事件和监听器,包括它们的工作原理、如何定义和使用它们,以及一些实际应用场景。
CoderJia
2024/10/18
3630
重学SpringBoot3-事件与监听器
SpringBoot2.x基础篇:编写应用程序时常用的ApplicationEvents
在SpringFramework编写过程中使用了大量的Event/Listener来做一些解耦的任务工作,当然在SpringBoot内同样也沿用了这一点,如果你看过我写的 业务解耦利器Event/Listener ,你应该了解事件的发布都是由ApplicationContext进行控制,但是在SpringBoot启动过程中有一些Event是在ApplicationContext实例化之前发布的,那我们要怎么去监听这些Events呢?
恒宇少年
2020/03/20
6980
SpringBoot2.x基础篇:编写应用程序时常用的ApplicationEvents
spring(2) - springboot内置Tomcat 启动过程
当在服务器执行该命令的时候 : 服务器去环境变量找到 "java" 对应的执行文件路径 (例如 windows中的 java.exe) --> 执行java.exe --> 按照启动参数,调用JNI 申请内存,初始化JVM ,调用类的加载器进行类的预加载(检查,校验,加载等) 将jdk自带的核心类库加载到方法区 --> 找到主类 --> 执行 main方法
惊羽-布壳儿
2022/06/15
9340
spring(2) - springboot内置Tomcat 启动过程
springboot启动流程简述_请简要说明单位根的流程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171553.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/24
2230
【愚公系列】2023年10月 Java教学课程 168-SpringBoot事件监听
SpringBoot事件监听器是一种机制,可以监听应用程序中的事件和状态变化。它可以让开发人员在应用程序启动、关闭、失败或者其他事件发生时,接收到通知并执行相应的操作。SpringBoot提供了很多种事件监听器,如应用程序启动事件、应用程序关闭事件、Web服务器启动事件、Web服务器关闭事件等。开发人员可以通过实现特定的监听器接口并注册到SpringBoot中,来监听这些事件的触发并执行相应的操作。
愚公搬代码
2025/05/28
900
【愚公系列】2023年10月 Java教学课程 168-SpringBoot事件监听
推荐阅读
相关推荐
springboot 启动原理、启动过程、启动机制的介绍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验