SpringBoot的啟動原理?

大家好,我是鋒哥。今天分享關于【SpringBoot的啟動原理?】面試題。希望對大家有幫助;

SpringBoot的啟動原理?

1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網

Spring Boot的啟動原理主要是通過 SpringApplication 類來啟動一個Spring Boot應用。具體的啟動流程可以分為以下幾個主要步驟:

1.?初始化SpringApplication對象

  • Spring Boot應用的啟動入口通常是?main?方法,通常是應用的啟動類。
  • 啟動類通過?SpringApplication.run(Application.class, args)?啟動應用。SpringApplication?是Spring Boot的核心類,它負責整個應用的啟動過程。
public static void main(String[] args) {SpringApplication.run(Application.class, args);
}

2.?創建SpringApplication實例

  • SpringApplication.run()?方法會創建一個?SpringApplication?實例,并調用它的?run()?方法來啟動Spring應用上下文。
SpringApplication application = new SpringApplication(Application.class);

3.?準備和初始化環境

  • 在調用?run()?方法時,Spring Boot首先會創建一個?ApplicationContext,并加載所有的配置(如:application.properties?或?application.yml)。
  • 它會通過?ConfigurableEnvironment(也就是 Spring 的環境配置對象)來加載屬性配置。此時,Spring Boot 會加載默認的環境配置,如嵌入式Tomcat配置、數據源配置等。

4.?設置命令行參數和配置

  • 在Spring Boot應用啟動時,SpringApplication?會解析啟動時傳遞的命令行參數,并在運行時將這些參數設置到Spring環境中。
  • 如果應用包含@SpringBootApplication注解,它會幫助我們自動配置很多常見的配置(如數據庫、JPA、Web應用等)。

5.?創建Spring應用上下文(ApplicationContext)

  • Spring Boot會創建一個默認的?AnnotationConfigApplicationContext?或者?GenericWebApplicationContext,它會掃描并加載所有的配置和Bean(包括自動配置的類)。
  • 這會根據應用程序中的配置類(標注@Configuration或其他配置注解)來初始化 Spring 容器,并自動注入相應的Bean。

6.?自動配置機制

  • Spring Boot提供了?自動配置?的機制,借助于?@EnableAutoConfiguration?注解,Spring Boot根據項目的依賴和配置自動判斷需要哪些默認配置。
  • 例如,如果項目中有?spring-boot-starter-web?依賴,Spring Boot就會自動配置Tomcat作為Web服務器。

7.?運行SpringApplication的生命周期監聽器

  • 在應用啟動過程中,Spring Boot會觸發不同的事件,允許開發者監聽這些事件來定制應用的行為。比如,ApplicationEnvironmentPreparedEventApplicationContextInitializedEventApplicationPreparedEvent等事件。

8.?啟動嵌入式Web服務器

  • 如果是Web應用(比如RESTful API應用),Spring Boot會自動啟動一個嵌入式Web服務器。默認情況下,Spring Boot使用Tomcat作為Web服務器,但也可以使用Jetty或Undertow等。
  • Spring Boot會根據應用的配置自動啟動嵌入式Web服務器,并將應用部署在該服務器上。

9.?執行?CommandLineRunner?或?ApplicationRunner

  • 如果應用中有實現了?CommandLineRunner?或?ApplicationRunner?接口的Bean,Spring Boot會在應用啟動完成后執行這些接口中的?run()?方法。
  • 這通常用于應用啟動后進行一些自定義的初始化工作,比如加載數據、初始化緩存等。

10.?應用啟動完畢

  • 一旦Spring Boot應用完全啟動,SpringApplication.run()方法返回并且控制權回到調用者(通常是main方法)。此時,Spring Boot應用就可以接收HTTP請求或執行其他任務。

關鍵點總結:

  • SpringApplication:應用啟動的核心類。
  • 自動配置:Spring Boot根據項目依賴自動配置常見的服務和組件。
  • ApplicationContext:Spring應用上下文,管理所有Bean和配置信息。
  • 嵌入式Web服務器:默認啟動嵌入式Web服務器(如Tomcat),可以根據需要替換為其他服務器。
  • 生命周期監聽:Spring Boot通過事件機制觸發生命周期相關的操作。

通過這些步驟,Spring Boot應用能夠高效、快速地啟動并提供服務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72905.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72905.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72905.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄第55期訓練營第八天|LeetCode344.反轉字符串、541.反轉字符串II、卡碼網:54.替換數字

前言 這是我參加的第二次訓練營!!!爽!這次我將更加細致的寫清每一道難題,不僅是提升自己,也希望我自己的寫的文章對讀者有一定的幫助! 打卡代碼隨想錄算法訓練營第55期第八天(づ&a…

Json的應用實例——cad 二次開發c#

以下是一個使用AutoCAD C#.NET API實現你需求的示例代碼,代碼實現了提示用戶選擇一個實體,將一些字符串變量及其對應的值組成JSON格式數據存儲到實體的擴展數據(XData)中,并在彈出窗口中顯示該實體的所有擴展數據信息。…

Springboot的jak安裝與配置教程

目錄 Windows系統 macOS系統 Linux系統 Windows系統 下載JDK: 訪問Oracle官網或其他JDK提供商網站,下載適合Windows系統的JDK版本。網站地址:Oracle 甲骨文中國 | 云應用和云平臺點擊進入下滑,點擊進入下載根據自己的系統選擇&…

Python與區塊鏈隱私保護技術:如何在去中心化世界中保障數據安全

Python與區塊鏈隱私保護技術:如何在去中心化世界中保障數據安全 在區塊鏈世界里,透明性和不可篡改性是兩大核心優勢,但這也帶來了一個悖論——如何在公開賬本的同時保障用戶隱私?如果你的交易記錄對所有人可見,如何防止敏感信息泄露? Python 作為區塊鏈開發中最受歡迎的…

通俗詳解redis底層數據結構哈希表之漸進式rehash

一、為什么要用漸進式rehash? 假設你家的舊柜子(哈希表)裝滿了,需要換個大柜子。如果一次性把所有東西倒騰到新柜子,你可能得停下手頭所有事,累得半死(這就是傳統rehash的問題:卡頓…

基于 FPGA的HLS技術與應用

1、hls簡介 HLS ( high level synthesis )即高層次綜合,主要是利用高級編程語言實現算法。 2、循環優化 絕大多數循環都以串行的方式執行,這種執行方式比較浪費時間。對于串行的循環有兩種優化方式,轉為 并行( Unrol…

Kafka consumer_offsets 主題深度剖析

Kafka consumer_offsets 主題深度剖析 在 Apache Kafka 的消息消費機制中,確保消息被可靠消費是一個核心問題。為了解決這個問題,Kafka 設計了一個特殊的內部主題 consumer_offsets,用于跟蹤和管理消費者組的消費進度。 consumer_offsets 的…

基于javaweb的SpringBoot時裝購物系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

B站pwn教程筆記-5

復習和回顧 首先復習一下ELF文件在內存和磁盤中的不同。內存只關注讀寫這權限,會合并一些代碼段。 動態鏈接庫只在內存中單獨裝在一份 因為很多軟件都要用動態鏈接庫了,不可能一個個單獨復制一份。但是在有的調試環境下會單獨顯示出來各一份。 ld.so是裝…

云原生網絡拓撲:服務網格的量子糾纏效應

引言:數據平面的蟲洞躍遷 谷歌服務網格每日處理5萬億請求,Istio 1.20版本時延降低至0.8ms。螞蟻集團Mesh架構節省42%CPU開銷,AWS App Mesh實現100ms跨區故障切換。LinkedIn Envoy配置規則達1200萬條,騰訊云API網關QPS突破900萬。…

爬蟲——playwright獲取亞馬遜數據

目錄 playwright簡介使用playwright初窺亞馬遜安裝playwright打開亞馬遜頁面 搞數據搜索修改bug數據獲取翻頁優化結構 簡單保存 playwright簡介 playwright是微軟新出的一個測試工具,與selenium類似,不過與selenium比起來還是有其自身的優勢的&#xff…

Matrix-Breakout-2-Morpheus靶場通關心得:技巧與經驗分享

1.安裝靶機,并在虛擬機打開,確保和kali在同一個NAT網段 2.使用kali來確定該靶機的IP nmap -O 192.168.139.1/24 3.訪問該IP192.168.139.171 4.訪問robots.txt 5.掃描目錄 gobuster dir -u http://192.168.139.171 -x php,bak,txt,html -w /usr/share/d…

機器學習掃盲系列(2)- 深入淺出“反向傳播”-1

系列文章目錄 機器學習掃盲系列(1)- 序 機器學習掃盲系列(2)- 深入淺出“反向傳播”-1 文章目錄 前言一、神經網絡的本質二、線性問題解析解的不可行性梯度下降與隨機梯度下降鏈式法則 三、非線性問題激活函數 前言 反向傳播(Ba…

(一)飛行器的姿態歐拉角, 歐拉旋轉, 完全數學推導(基于坐標基的變換矩陣).(偏航角,俯仰角,橫滾角)

(這篇寫的全是基矢變換矩陣)不是坐標變換矩陣,坐標變換矩陣的話轉置一下,之后會有推導. 是通過M轉置變換到P撇點.

C語言和C++到底有什么關系?

C 讀作“C 加加”,是“C Plus Plus”的簡稱。 顧名思義,C 就是在 C 語言的基礎上增加了新特性,玩出了新花樣,所以才說“Plus”,就像 Win11 和 Win10、iPhone 15 和 iPhone 15 Pro 的關系。 C 語言是 1972 年由美國貝…

PCB畫圖軟件PROTEL99SE學習-05畫出銅箔來

sch設計的是各個器件的電連接。設計的就是各種節點的網絡表關系。不管你器件怎么擺放,好看不好看。都不重要。最終設計電路板是把網絡表中連線的網絡節點都用銅箔實物相連,讓他們導電。 網表導出后我們不用去看他,也不用管他的格式。 我們打開…

helm部署metricbeat

背景 在Elastic Stack 7.5版本之前,系統默認采用內置服務進行監控數據采集(稱為內部收集機制),這種設計存在顯著局限性: 當ES集群崩潰時自帶的節點監控也會隨之崩潰,直到集群恢復前,崩潰期間的…

【菜鳥飛】AI多模態:vsCode下python訪問阿里云通義文生圖API

目標 有很多多模態的AI工具,用的少就用在線圖形化的,需要批量,就嘗試代碼生成,本文嘗試代碼調用多模態AI,阿里通義有免費額度,作為練手應該挺好,如果以后選其他的,技術也是相通的。…

從零實現本地文生圖部署(Stable Diffusion)

1. 依賴安裝 文件打包下載地址(Stable Diffusion) # git : 用于下載源碼 https://git-scm.com/downloads/win # Python 作為基礎編譯環境 https://www.python.org/downloads/ # Nvidia 驅動,用于編譯使用GPU顯卡硬件 https://ww…

緩存監控治理在游戲業務的實踐和探索

作者:來自 vivo 互聯網服務器團隊- Wang Zhi 通過對 Redis 和 Caffeine 的緩存監控快速發現和定位問題降低故障的影響面。 一、緩存監控的背景 游戲業務中存在大量的高頻請求尤其是對熱門游戲而言,而應對高并發場景緩存是一個常見且有效的手段。 游戲業…