【spring源碼分析】IOC容器初始化(總結)

前言:在通過前面十二篇文章的分析,對bean的加載流程大體梳理清楚了。由於內容過多,所以須要進行一個小總結。html


通過前面十二篇文章的漫長分析,終於將xml配置文件中的bean,轉換成咱們實際所須要的真正的bean對象。spring

總結

【spring源碼分析】IOC容器初始化(一):主要分析了Spring是如何解析佔位符以及BeanFactory的最終實現類DefaultListableBeanFactory。緩存

【spring源碼分析】IOC容器初始化(二):以loadBeanDefinitions函數爲切入點,介紹了Resource體系與ResourceLoader體系,以及Spring是如何肯定文件的驗證模式,着重分析了Spring是如何對註釋信息進行消費的。函數

【spring源碼分析】IOC容器初始化(三):主要分析Spring是如何對bean進行解析的,爲BeanDefinition的註冊作準備。源碼分析

【spring源碼分析】IOC容器初始化(四):分析BeanDefinition註冊的核心流程。spa

以上4篇文章,主要分析了Spring是如何從xml配置文件中加載並解析bean變成BeanDefinition對象的。注意最終BeanDefinition的落腳點爲:beanDefinitionMap。bean加載的整個流程以下圖:xml

【spring源碼分析】IOC容器初始化(五):本篇文章主要對AbstractApplicationContext#refresh的剩餘方法進行粗略介紹,瞭解其大體流程。htm

【spring源碼分析】IOC容器初始化(六):進入bean的加載流程,主要分析如何從單例緩存中獲取bean實例。
對象

【spring源碼分析】IOC容器初始化(七):繼續分析了從單例緩存中獲取bean實例,而且還簡要分析了其餘scope做用域bean的實例化流程。blog

【spring源碼分析】IOC容器初始化(八):主要介紹AbstractAutowireCapableBeanFactory#createBean方法,關注createBeanInstance、populateBean、initializeBean函數。

【spring源碼分析】IOC容器初始化(九):着重分析instantiateUsingFactoryMethod方法的執行流程,方法體較大,其核心點就是肯定工廠對象、獲取構造函數和構造參數,最後經過反射執行工廠方法建立bean對象。

【spring源碼分析】IOC容器初始化(十):分析了AbstractAutowireCapableBeanFactory#createBean的餘下流程。

【spring源碼分析】IOC容器初始化(十一):主要分析了createBeanInstance方法的餘下流程,主要關注populateBean和initializeBean方法。

【spring源碼分析】IOC容器初始化(十二):着重分析了Spring中的循環依賴問題,Spring只解決單例模式下的循環依賴問題。

從六到十二篇主要分析了bean的初始化過程,以及Spring中是如何解決循環依賴的。

接下來計劃:IOC初始化過程當中查漏補缺,Spring AOP的相關源碼。


by Shawn Chen,2019.04.29,下午。

相關文章
相關標籤/搜索