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 大大简化了项目的初始化和配置过程,提高了开发效率。开发者只需关注业务逻辑的实现,而无需过多关注底层框架的配置和管理。

目录
相关文章
|
1月前
|
前端开发 Java 应用服务中间件
SpringBoot-Run启动流程
探索Spring Boot启动流程,从加载配置、创建应用上下文、自动配置到启动内嵌服务器。启动类是入口点,`@SpringBootApplication`标记启动,`SpringApplication.run`启动应用。自动配置基于条件注解配置Bean,应用上下文由`SpringApplication`创建并刷新。内嵌服务器如Tomcat随应用启动,简化部署。理解此流程有助于深入掌握Spring Boot。
171 2
|
3月前
|
缓存 Java 程序员
springboot的启动流程总结
springboot的启动流程总结
|
3月前
|
设计模式 Java 容器
SpringBoot2 | SpringBoot启动流程源码分析(二)
SpringBoot2 | SpringBoot启动流程源码分析(二)
44 0
|
4月前
|
设计模式 Java 机器人
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
|
1天前
|
Java Spring 容器
深入理解Spring Boot启动流程及其实战应用
【4月更文挑战第9天】本文详细解析了Spring Boot启动流程的概念和关键步骤,并结合实战示例,展示了如何在实际开发中运用这些知识。
9 2
|
10天前
|
缓存 Java 开发者
10个点介绍SpringBoot3工作流程与核心组件源码解析
Spring Boot 是Java开发中100%会使用到的框架,开发者不仅要熟练使用,对其中的核心源码也要了解,正所谓知其然知其所以然,V 哥建议小伙伴们在学习的过程中,一定要去研读一下源码,这有助于你在开发中游刃有余。欢迎一起交流学习心得,一起成长。
|
14天前
|
Java
创建SpringBoot流程
创建SpringBoot流程
21 1
|
5月前
|
安全 NoSQL Java
SpringBoot集成Activiti5.22在线流程设计器
SpringBoot集成Activiti5.22在线流程设计器
60 0
SpringBoot集成Activiti5.22在线流程设计器
|
3月前
|
缓存 Java uml
SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
46 0
|
3月前
|
Java 容器 Spring
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
33 0