首頁 > Java > java教程 > 春季 - 春季啟動 - 啟動 - 表演

春季 - 春季啟動 - 啟動 - 表演

DDD
發布: 2025-01-29 16:13:08
原創
540 人瀏覽過

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板