SpringBoot启动流程是什么?

简介: Spring Boot 启动流程可以概括为以下几个步骤

Spring Boot 启动流程可以概括为以下几个步骤,下面对每个步骤进行详细介绍:

  1. 加载启动类: Spring Boot 应用的启动入口是一个带有 @SpringBootApplication 注解的启动类。这个注解是一个组合注解,包含了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解,它们分别用于指定配置类、自动装配和组件扫描。
  2. 创建 Spring 应用上下文: 在加载启动类时,Spring Boot 会创建一个 Spring 应用上下文(Application Context)。应用上下文是 Spring 框架的核心容器,负责管理 Bean 的创建、依赖注入等操作。Spring Boot 的应用上下文是基于 AnnotationConfigApplicationContext 实现的,通过读取启动类以及相关配置类中的注解信息来构建应用上下文。
  3. 执行自动装配: Spring Boot 利用自动装配机制,根据约定和条件注解加载所需的配置和组件。在创建应用上下文后,Spring Boot 会扫描并加载类路径下的所有 Starter,然后根据 Starter 中定义的条件注解,自动装配相应的配置和组件。自动装配是 Spring Boot 实现快速开发的重要机制,能够极大地减少开发者的配置工作。
  4. 运行应用: 在完成自动装配后,Spring Boot 会根据应用上下文中的配置信息启动 Web 服务或其他类型的应用。例如,如果引入了 spring-boot-starter-web Starter,Spring Boot 将创建一个嵌入式的 Tomcat 容器,并根据配置启动一个 Web 服务。同时,Spring Boot 还会扫描并加载其他组件,如控制器、服务等,以便处理请求和业务逻辑。
  5. 执行生命周期回调: 在应用运行期间,Spring Boot 提供了一系列的生命周期回调方法,允许开发者在应用启动前或停止后执行特定的逻辑操作。通过实现 ApplicationRunnerCommandLineRunner 接口,并将其注入到应用上下文中,开发者可以编写自己的生命周期回调方法。
  6. 应用关闭: 当应用需要关闭时,Spring Boot 会触发关闭事件,并执行相应的清理工作。例如,关闭数据库连接、释放资源等。同时,Spring Boot 也会调用实现了 DisposableBean 接口的 destroy() 方法,以便进行额外的清理操作。

总结而言,Spring Boot 的启动流程包括加载启动类、创建应用上下文、执行自动装配、运行应用、执行生命周期回调和应用关闭。通过自动装配和约定优于配置的原则,Spring Boot 大大简化了项目的初始化和配置过程,提高了开发效率。开发者只需关注业务逻辑的实现,而无需过多关注底层框架的配置和管理。

目录
相关文章
|
6月前
|
前端开发 Java 应用服务中间件
SpringBoot-Run启动流程
探索Spring Boot启动流程,从加载配置、创建应用上下文、自动配置到启动内嵌服务器。启动类是入口点,`@SpringBootApplication`标记启动,`SpringApplication.run`启动应用。自动配置基于条件注解配置Bean,应用上下文由`SpringApplication`创建并刷新。内嵌服务器如Tomcat随应用启动,简化部署。理解此流程有助于深入掌握Spring Boot。
214 2
|
6月前
|
缓存 Java 程序员
springboot的启动流程总结
springboot的启动流程总结
|
6月前
|
设计模式 Java 容器
SpringBoot2 | SpringBoot启动流程源码分析(二)
SpringBoot2 | SpringBoot启动流程源码分析(二)
79 0
|
6月前
|
设计模式 Java 机器人
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
|
1月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
179 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
65 3
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
168 2
|
1月前
|
JSON 前端开发 JavaScript
优雅!Spring Boot 3.3 实现职责链模式,轻松应对电商订单流程
本文介绍如何使用 Spring Boot 3.3 实现职责链模式,优化电商订单处理流程。通过将订单处理的各个环节(如库存校验、优惠券核验、支付处理等)封装为独立的处理器,并通过职责链将这些处理器串联起来,实现了代码的解耦和灵活扩展。具体实现包括订单请求类 `OrderRequest`、抽象处理器类 `OrderHandler`、具体处理器实现(如 `OrderValidationHandler`、`VerifyCouponHandler` 等)、以及初始化职责链的配置类 `OrderChainConfig`。
|
3月前
|
XML Java 应用服务中间件
SpringBoot启动流程解析
SpringBoot启动流程解析
47 0