開始工作以後,陸陸續續寫了幾年的程式,Spring boot 幾乎可以說是每位 Java 開發者都會碰到的後端框架。其實從很早以前,就有「想要了解 Spring 的底層到底在做什麼」的想法?但無奈於那時候的實力不夠,沒有太好的資訊查找能力;加上直接硬啃 Spring 的底層源碼超花時間,因此進度雖然是有,但還是相對緩慢。
直到後來找到了幾個有點脈絡的文章跟資源,加上最近幾年 AI 開始發展起來,原本很多懸而未解的問題漸漸能得到答案。加上 Spring 源碼的解析環節也差不多告一段落了。剛好趁著這次的鐵人賽,把這些時間貼貼補補的內容整理出來,分享給大家,希望能給大家帶來幫助,一起在後端的路上持續成長、前進。
本系列文章的標題為「30 篇淺談 spring 框架的核心底層組件」,使用的是 3.3.3 版本的 Spring Boot 原始程式,內容會依序談到 Spring Framework, Spring MVC 與 Spring Boot 相關的啟動原理、部分核心類別、以及各組件的調用順序與背後邏輯,旨在讓一般 web 開發的 Java 工作者可以更了解自己每天都在接觸的 Spring 到底是怎麼啟用與運作的?
此外,雖然本文參考的是 3 系列的 Spring Boot,但篇幅大多還是會放在 2-3 系列共有的內容上,主要考慮到 2 個因素:身邊部分朋友的還是使用 2.x 系列的 Spring Boot 在進行日常開發(寫文還是希望朋友能看);以及 以宏觀的啟動流程來看,2-3 系列的核心組件其實沒有太大的變動,因此讀者不太需要擔心「因為版差,導致大部分的內容都對應不上」或者是「雖然看懂了,但實務開發早已不再這樣使用」的問題。
本系列文章的目標讀者預期是以下幾類:
這邊會預先假設讀者已經了解 Java 的基本原理,也預設都知道一些常見的 Spring Boot 知識,因此文章不會特別說明 @Configuration、@Import 的用途、不會解釋 @Controller, @RestController 和 @ControllerAdvice 差在哪裡、也不會從頭說明 OOP 的封裝繼承多態,跟什麼是模板、單例、責任鏈 ...等設計模式是甚麼。因此文章並不適合新手閱讀。如果上面談到的這些東西你都不太了解,我會建議你可以先把文章存下來,留著等以後變強了再來回頭看。
下面先列了後續 29 天我打算使用的文章標題,大多是些 Spring 的抽象類別或介面,但也有少數幾個值得一提的實體類別。文章的順序並不等於 Spring 啟動時的調用順序,比較像是我自己覺得「先講這個、再講那個,應該會比較連貫也好懂?」的編排方法。當然了,要透過 30 天就把架構的所有細節都描述出來,是不可能做到的。但雖如此,還是期待可以用 30 天的時間,讓讀者大致理解 Spring 的底層運作邏輯。至於能不能做到,就再看看我的寫文功力怎麼樣了(笑)
期待後續各位的閱讀與分享,我是 Pax,我們明天見。