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