热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot应用启动流程详解

本文详细介绍了SpringBoot的启动过程,包括初始化、资源加载、上下文创建及配置加载等关键步骤,帮助开发者深入理解SpringBoot的内部机制。

Spring Boot 的启动流程是一个复杂但有序的过程,涉及到多个阶段和组件的协同工作。以下是 Spring Boot 启动过程中的一些核心步骤:


1. 构造方法初始化

当创建一个新的 SpringApplication 实例时,首先会执行其构造方法。在这个方法中,主要完成了以下几项工作:

  • 初始化资源加载器,默认情况下为 null
  • 确保传入的主要源类(primarySources)不为 null,否则抛出异常。
  • 初始化主要源类集合,同时去除重复项。
  • 判断当前应用程序的类型(NONESERVLETREACTIVE)。
  • 加载所有的初始化器,这些初始化器是从 META-INF/spring.factories 文件中读取的 ApplicationContextInitializer 类的实例名称集合。
  • 设置监听器,同样从 META-INF/spring.factories 文件中读取 ApplicationListener 类的实例名称集合。
  • 推断主入口应用类,通过当前调用栈获取 Main 方法所在的类。

2. 启动流程

启动流程的核心方法是 run 方法,该方法负责整个应用的启动过程,主要包括以下几个步骤:

  • 创建并启动计时监控类 StopWatch,用于记录应用启动时间。
  • 初始化上下文和异常报告集合。
  • 设置系统属性 java.awt.headlesstrue,以便在无显示设备的环境下运行。
  • 注册监听器,创建所有运行监听器并发布应用启动事件。
  • 加载命令行参数,解析命令行中通过 --key=value 形式输入的属性值。
  • 准备 Spring 环境,包括配置环境变量和设置忽略的参数。
  • 创建 Banner 打印类,用于在应用启动时打印欢迎信息。
  • 根据当前应用类型(SERVLETREACTIVENONE)创建相应的应用上下文对象。
  • 设置异常报告对象,用于捕获并报告启动过程中可能出现的错误。
  • 准备当前上下文对象,包括将启动类注入容器,为后续的自动化配置提供基础。
  • 加载资源配置,完成自动装配。
  • 刷新应用上下文,执行一系列初始化操作。
  • 执行后置操作,如启动所有的监听器对象和运行器。
  • 处理启动失败的情况,确保应用能够优雅地退出。
  • 启动完成后,发布应用上下文就绪事件,并返回应用上下文对象。

通过上述步骤,Spring Boot 能够高效且灵活地管理应用的启动过程,为开发者提供了强大的支持。


推荐阅读
author-avatar
mobiledu2502890433
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有