1. 程式人生 > >Spring原始碼深度解析-1、Spring核心類簡單介紹

Spring原始碼深度解析-1、Spring核心類簡單介紹

在更新JAVA基礎原始碼學習的同時,也有必要把Spring抓一抓,以前對於spring的程度僅在於使用,以及一點IOC/AOP的概念,具體深層的瞭解不是很深入,每次看了一點原始碼就看不下去,然後一轉眼都忘記看了啥。
所以這次專門買了書,來細細品味下Spring。
希望能從這一波學習中加強自己對spring更深的認識。

對Spring原始碼的正式深入學習之前,有必要了解下Spring中最核心的兩個類:

1、DefaultListableBeanFactory
DefaultListableBeanFactory 是Spring整個bean載入的核心部分。
XmlBeanFactory繼承自Spring,是在配置檔案中配置的bean 的載入實現,使用了自定義的BeanDefinitionReader.
下面看下容器載入類圖:
在這裡插入圖片描述

2、XmlBenDefinitionReader
XmlBenDefinitionReader非常重要,因為spring的很多配置資訊通過xml讀取,因此我們可以從它這裡梳理一下資源的讀取,解析和註冊的大致流程,

類圖放下:
在這裡插入圖片描述

先看下各個類用來幹什麼?
ResourceLoader:資源載入器
BeanDefinitionReader:定義從ResourceLoader讀取資原始檔轉換成BeanDefinition的功能
EnvironmentCapable:定義獲取Environment的方法
DocumentLoader:定義從資原始檔轉換到Document物件的方法
AbstractBeanDefinitionReader:對EnvironmentCapable、BeanDefinitionReader定義的功能進行實現
BeanDefinitionDocumentReader:定義讀取Document並註冊BeanDefinition的功能。
BeanDefinitionParserDelegate:定義解析Element的各種方法。

1、通過繼承自AbstractBeanDefinitionReader的方法,來使用ResourceLoader載入資源轉換為對應的Resource物件。
2、通過DocumentLoader把Resource物件轉為Document物件
3、通過實現介面BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader來解析Document物件,並使用BeanDefinitionParserDelegate來解析。