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