首页 > Java > java教程 > 春季 - 春季启动 - 启动 - 表演

春季 - 春季启动 - 启动 - 表演

DDD
发布: 2025-01-29 16:13:08
原创
499 人浏览过

spring-: spring-boot-bootstrapping-behind-the-scenes

Spring Boot应用启动背后隐藏着诸多步骤,本文将逐步剖析其逻辑执行顺序。

一、Spring Boot应用启动步骤

1.1 JVM启动与主类加载

  • Java虚拟机(JVM)启动并加载包含public static void main(String[] args)方法的主类。

1.2 执行SpringApplication.run()方法

  • 执行SpringApplication.run()方法,启动Spring Boot应用。这是所有Spring Boot应用的入口点。

1.3 初始化SpringApplication

  • SpringApplication初始化,包括:
    • 判断应用类型(Web或非Web)。
    • 加载应用配置和环境属性。
    • 准备应用上下文。

1.4 准备ApplicationContext

  • 创建Spring应用上下文,作为容器管理Bean、配置和依赖关系。
  • 若为Web应用,则使用基于Servlet的上下文(如AnnotationConfigServletWebServerApplicationContext)。

1.5 加载ApplicationContextInitializer

  • 加载已注册的ApplicationContextInitializer Bean(在上下文启动前修改上下文)。

1.6 检测并应用SpringApplicationRunListener

  • Spring扫描并加载任何SpringApplicationRunListener实现,允许外部监听器接收应用启动事件通知。

1.7 准备环境(属性、配置文件和配置)

  • 加载环境变量、application.propertiesapplication.yml以及命令行参数。
  • 确定活动和默认配置文件。

1.8 刷新应用上下文

  • 应用上下文完全刷新,包括:
    • 扫描带有@Component@Service@Repository@Controller注解的类。
    • 实例化Bean并管理其生命周期。
    • 应用依赖注入并解析依赖关系。

1.9 启动嵌入式Web服务器(如果适用)

  • 若为Web应用,Spring Boot自动启动嵌入式Web服务器(Tomcat、Jetty或Undertow)。
  • Web服务器监听指定端口的传入请求。

1.10 执行CommandLineRunnerApplicationRunner Bean

  • 如果存在实现CommandLineRunnerApplicationRunner的Bean,则执行它们。
  • 这些Bean用于在应用启动后运行初始化逻辑。

1.11 触发ApplicationReadyEvent事件

  • 触发ApplicationReadyEvent事件,表示应用已完全启动并准备好处理请求。

1.12 保持应用运行(对于Web应用)

  • 对于Web应用,应用保持运行,等待传入的HTTP请求。
  • 对于非Web应用,在运行初始化逻辑后退出。

二、逻辑执行顺序:简要概述

为了记住启动流程,可以将其视为三个主要阶段:

1️⃣ 引导阶段

  • JVM启动应用。
  • 执行SpringApplication.run()
  • 准备环境和配置。

2️⃣ 上下文初始化阶段

  • 创建和刷新应用上下文。
  • 扫描、创建和注入Bean。
  • 如果是Web应用,则启动嵌入式服务器。

3️⃣ 启动后阶段

  • 执行CommandLineRunnerApplicationRunner
  • 应用完全运行并等待请求。?

以上是春季 - 春季启动 - 启动 - 表演的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板