首页 > 其他分享 >Spring Boot 启动流程

Spring Boot 启动流程

时间:2025-01-17 20:32:04浏览次数:3  
标签:Web 启动 Spring 流程 配置 Boot Bean

1. 引导类(Bootstrap Class)

启动一个 Spring Boot 应用程序的第一步是编写引导类,该类包含了一个 main 方法,负责启动整个应用程序。例如:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • @SpringBootApplication 注解是一个复合注解,它集成了 @Configuration@EnableAutoConfiguration, 和 @ComponentScan
    • @Configuration 表示这个类是配置类,替代了传统的 XML 配置文件。
    • @EnableAutoConfiguration 启用了 Spring Boot 的自动配置机制,基于项目中的依赖自动配置合适的 Spring Bean。
    • @ComponentScan 自动扫描引导类所在的包及其子包中使用了特定注解的组件,如 @Component@Service@Repository@Controller
2. SpringApplication 类的作用

SpringApplication.run(Application.class, args) 是启动 Spring Boot 应用的核心方法。它主要分为以下几个步骤:

  • 准备环境(Prepare Environment):创建并配置 SpringApplication 实例,并初始化必要的组件和上下文。
  • 创建并配置 ApplicationContext:选择合适的 ApplicationContext 类型,比如 Web 应用会选择 AnnotationConfigServletWebServerApplicationContext
  • 打印 Spring Boot Banner:在启动时显示欢迎信息,可以通过设置 spring.main.banner-mode=off 来关闭。
3. 自动配置(Auto-Configuration)

@EnableAutoConfiguration 根据项目的依赖和配置自动装配合适的 Spring Bean。通过读取 META-INF/spring.factories 文件中的配置类来实现自动配置。Spring Boot 使用条件化配置(Conditional Configuration),根据当前的应用环境智能地做出判断,只配置必要的组件,避免过度配置。

4. 刷新 ApplicationContext(Refresh Context)

在自动配置完成后,调用 ApplicationContextrefresh 方法加载并初始化所有 Spring Bean。这包括:

  • 扫描注册 Beans。
  • 进行依赖注入(Dependency Injection),解决所有 Bean 之间的依赖关系。
  • 初始化 Lifecycle Beans,如果你的 Bean 实现了 InitializingBean 接口或者使用了 @PostConstruct 注解,Spring 会在这一步调用它们的初始化方法。
5. 启动嵌入式 Web 服务器(Web 环境)

对于 Web 应用,Spring Boot 会自动启动一个嵌入式的 Web 服务器(如 Tomcat、Jetty 或 Undertow)。这个过程包括加载 Web 相关配置、启动 Web 服务器以及根据配置设置监听端口和上下文路径。

6. 运行 ApplicationRunner 和 CommandLineRunner

提供了接口允许开发者在应用完全启动后执行一些自定义逻辑或初始化任务。这对于执行启动后的操作非常有用,比如加载缓存、检查数据库连接等。

7. 启动完成和确认

Spring Boot 输出日志表明应用程序已成功启动,并准备好处理请求。这条日志不仅确认了启动成功,还提供了关于启动性能的信息,如启动时间,帮助评估应用的性能表现。

8. 处理请求和运行

一旦启动成功,Spring Boot 应用可以开始处理外部请求或执行预定的任务。对于 Web 应用,Spring MVC 通过 DispatcherServlet 处理所有的 HTTP 请求,将它们路由到相应的控制器(@Controller@RestController)的方法。

9. 优雅关闭(Graceful Shutdown)

当决定停止应用时,Spring Boot 执行清理工作,包括调用 DisposableBean 接口中的 destroy 方法以及优雅地关闭嵌入式 Web 服务器,确保所有请求都被处理完毕后再关闭服务器。

总结

Spring Boot 设计旨在简化开发者的体验,减少配置负担的同时保持灵活性和强大的功能。从引导类到优雅关闭,Spring Boot 提供了一套完整的解决方案,使得构建独立、生产级别的基于 Spring 框架的应用变得更加简单快捷。通过自动配置、内嵌服务器等特性,极大地提高了开发效率,让开发者能够更专注于业务逻辑的实现。此外,Spring Boot 还支持微服务架构,使开发人员能够快速搭建分布式系统,提高系统的可扩展性和维护性。

标签:Web,启动,Spring,流程,配置,Boot,Bean
From: https://blog.csdn.net/suran36/article/details/145213587

相关文章

  • springboot小程序 uniapp基于Vue宏飞数码好物分享系统实现
    文章目录项目和技术介绍具体实现截图uniapp+hbuilderx错误处理和异常处理小程序框架以及目录结构介绍系统安全性java类核心代码部分展示软件测试数据完整性源码获取/详细视频演示项目和技术介绍微信开发者工具/hbuiderx后端语言支持以下技术栈:1java(SSM/springbo......
  • springboot“玩转巴中”旅游小程序设计与实现
    文章目录项目和技术介绍具体实现截图uniapp+hbuilderx错误处理和异常处理小程序框架以及目录结构介绍系统安全性java类核心代码部分展示软件测试数据完整性源码获取/详细视频演示项目和技术介绍微信开发者工具/hbuiderx后端语言支持以下技术栈:1java(SSM/springbo......
  • springboot高校学生饮食推荐系统(11175)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发......
  • springboot基于协同过滤算法的体育商品推荐系统(11211)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • wx028基于springboot+vue+uniapp的网上花店小程序
    开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示鲜花列表公告信息管理公告类型管理鲜花管理公告管理摘要网上花店微信小程序分为管理员还......
  • 基于springboot+vue的个性化旅游推荐系统的设计与实现
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示系统首页旅游景点个人中心管理员登录管理员功能界面用户界面旅游景点界面酒店信息界面旅游......
  • 免费送源码:Java+ssm+MySQL Springboot大学生心理健康咨询小程序 计算机毕业设计原创定
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用java技术建设大学......
  • 计算机毕业设计Springboot学员课外任务自主分配管理系统 Springboot学员课外任务管理
    计算机毕业设计Springboot学员课外任务自主分配管理系统dqyr3x0y(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享在现代教育体系中,课外任务作为提升学员实践能力和理论知识应用的重要手段,其管理和分配过程对教育效果有着直接影响。......
  • 计算机毕业设计Springboot体检套餐定制系统 基于Springboot的个性化体检方案定制平台
    计算机毕业设计Springboot体检套餐定制系统0jk52518(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着生活节奏的加快,人们对健康的关注度日益提升,传统的体检模式已难以满足多样化的健康需求。在此背景下,一款能够根据个人健康状况......
  • springboot毕设 基于SpringBoot的电脑商城 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为现代商业的重要组成部分。电脑作为高科技产品,其市场需求日益旺盛,消费者对于购买电脑的便捷性、信息透明度以......