本書從Spring IoC核心技術的使用開始講解, 具備充分的Spring IoC使用說明, 并且對Spring IoC核心源碼進行分析。本書的內容包括SpringXML模式中XML文件的驗證、XML資源讀取、Spring默認標簽的解析、自定義標簽解析、各類資源對象注冊和生命周期等, 以及Spring注解模式中的注解元數(shù)據、注解模式的啟動和注解模式下Bean的注冊等。本書可以幫助讀者快速掌握Spring IoC容器的基本使用及Spring IoC相關的源碼邏輯。本書的源碼分析在大部分情況下遵循測試用例優(yōu)先, 盡可能保證源碼現(xiàn)象可復現(xiàn)。
Spring框架是目前全球Java開發(fā)領域中最受歡迎的開發(fā)框架之一,F(xiàn)在主流的Java開發(fā)領域中有大量的項目基于Spring或者對接Spring進行適配。
筆者初識Spring是在2015年的一個項目中,當時項目使用的是Spring 4.1版本,該版本的功能雖然已經比較強大,但是各類配置文件的處理會比較煩瑣。隨著Spring版本的升級迭代,基于SpringXML的開發(fā)方式逐漸減少,Spring注解模式開發(fā)逐漸增多,目前Spring注解模式開發(fā)已經成為主流技術。筆者作為Spring的使用人員,對于Spring中的一些實現(xiàn)細節(jié)十分感興趣,并付諸實踐記錄了一些源碼的流程,同時想把這些經驗分享給更多的人,便有了本書。
Spring框架升級迭代的速度相對其他一些框架而言更快,本書中所采用的Spring框架版本是5.2.3.release,從Spring IoC層面來看,這些升級(新增spring.factories文件支持和新增spring.components文件支持)有些會影響Spring IoC相關內容,但是涉及Spring IoC相關的處理流程內容變化較少。如果有大版本的升級并改動了Spring IoC相關內容也屬于正常情況,請讀者耐心查看更新記錄找到變化的內容再對其進行分析,從而完善對Spring IoC的相關認識。
本書的組織結構和主要內容
本書共分為22章。
第1~8章主要圍繞SpringXML相關技術進行分析,將會對傳統(tǒng)的SpringXML開發(fā)進行說明,并對SpringXML相關的各類配置解析進行分析,內容如下。
第1章對Spring框架的使用進行說明,并講述Spring IoC中的核心類。
第2章對Spring IoC資源讀取及注冊相關內容進行分析,主要包含SpringXML資源文件的讀取、注冊和解析。
第3章對自定義標簽相關內容進行分析,包含如何編寫一個自定義標簽和自定義標簽的處理過程分析。
第4章對別名注冊和BeanDefinition注冊進行分析,包含別名注冊環(huán)境搭建、別名注冊流程和BeanDefinition注冊流程的分析。
第5章對bean標簽解析進行詳細分析,包含bean標簽解析環(huán)境搭建和解析流程分析。
第6章對Bean生命周期相關內容進行分析,包含Bean的初始化、Bean的屬性設置和Bean的摧毀相關分析。
第7章對Bean的獲取進行分析,包含獲取Bean的環(huán)境搭建和獲取Bean流程分析。
第8章對SpringXML模式下容器的生命周期進行分析,包含容器的啟動和容器的關閉(暫停)分析。
第9~14章主要圍繞Spring注解相關技術進行分析,將會對Spring注解相關內容進行分析,包含且不限于注解Bean加載、配置類解析和常用注解分析,內容如下。
第9章對Spring注解模式進行分析,包含Spring注解模式的環(huán)境搭建和啟動流程分析。
第10章對Spring配置類解析進行分析,包含常見注解的解析。
第11章對Spring中負責配置解析的類進行分析,主要分析對象是ConfigurationClassPostProcessor。
第12章對Spring注解模式下的Import注解相關源代碼進行分析,主要分析對象是DeferredImportSelectorHandler。
第13章對Spring注解模式下配置類中的Bean讀取進行分析,包含測試環(huán)境搭建和讀取流程分析。
第14章對Spring中常見的元數(shù)據進行說明和演示。
第15~22章主要圍繞Spring IoC輔助工具進行分析,將會對Spring中常見的一些輔助工具進行分析,包含且不限于占位符解析和Spring事件模式,內容如下。
第15章對Spring中的事件處理機制進行演示和源碼分析。
第16章對Spring中的占位符解析進行源碼分析。
第17章對Spring中關于對象轉換相關源碼進行分析并簡單實現(xiàn)了一個轉換服務。
第18章對Spring中的消息進行源碼分析,包含Spring消息環(huán)境搭建和處理流程分析。
第19章對Spring中資源解析器進行分析,包含資源解析器環(huán)境搭建和資源解析過程分析。
源代碼
第20章對Spring中BeanName的生成策略進行分析。
第21章對Spring中的條件注解進行分析,包含條件注解的環(huán)境搭建和注解解析流程分析。
第22章對Spring中的排序注解進行分析。
本書配套源代碼可以掃描右側二維碼獲取。
本書面向對象
本書面向具備Java編程能力的讀者和對Spring IoC具有使用經驗和有興趣的讀者,通過學習本書將學到Spring的基礎使用以及一些高級功能,如Spring事件和轉換服務等,以及Spring IoC的基礎實現(xiàn)邏輯。
致謝
在此非常誠摯地感謝所有SpringFramework項目的創(chuàng)建者和開發(fā)者,感謝他們所做的基礎性工作和對開源項目的熱情,沒有他們就沒有本書的誕生。
由于編者水平有限,書中不當之處在所難免,歡迎廣大同行和讀者批評指正。
王濤
2022年6月