Spring 之Srping IOC運行時序圖

加載XML文件——創建IOC容器時序圖

源碼理解

首先需要找到入口。IOC容器初始化運行的入口。

回顧

什麼是SpringIOC

IOC(Inversion Of Control)控制反轉,所謂控制反轉,就是把我們代碼中需要實現的對象的創建、依賴。反轉給容器來實現。同時需要一種描述讓容器知道需要創建的對象和對象之間的關係。即配置文件。

尋找源碼入口

1.關於BeanFactory

BeanFactory:頂層接口類,定義了IOC容器的基本規範。
三個重要子類:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory
最終的默認實現類:DefaultListableBeanFactory
Spring內部在操作過程中對象的傳遞和轉化過程中,有這各自的職能。如ListableBeanFactory接口,表示可初始化列表Bean

根據時序圖來解析

如何找到入口

通過對Spring的使用以及初步的認識,我們知道Spring的初始化是從DispatcherServlet開始的,我們可以發現Spring中有許多init開頭的方法,顧名思義,這些方法就是爲Spring初始化做準備的。通過其繼承關係,我們可以在其父類中找到最初的init()方法。

我們在HttpServletBean中可以發現有一個名爲initServletBean()的方法。

注意圈紅的代碼,結合我們在項目中使用Spring的時候控制檯打出的日誌。

沒有任何問題,我們找到入口了。(持續更新中,,,)

---------------------------------------------------2019-06-05---------------------------------------------------------------------------------------

入口已經找到,接下來慢慢抽絲剝繭揭開神祕的IOC容器的“面紗”

在initservletBean方法中,我們可以發現調用了initWebApplicationContext方法,我們來看這個方法

有一個方法叫作configureAndRefreshWebApplicationContext

在此方法中調用了refresh()方法,我們可以簡單理解爲,在Spring啓動過程中會調用refresh方法。這個時候讓我們在這個方法上多加點注意力。

IOC容器初始化的流程

容器啓動的過程大概可以概括爲三個步驟定位、加載和註冊。即定位我們的配置文件,加載配置文件和根據配置文件進行註冊

以ApplicationContext爲例,我們可以在main中啓動對xml文件的加載。以此來幫助我們去認識IOC容器。

通過對其構造方法的跟蹤,我們發現調用了refresh()方法,也就是我們時序圖的起點。通過setConfigLocations方法我們也可以發現,配置文件通過字符串數組的形式進行傳遞。這裏可以作爲我們學習IOC容器的起點,即,定位配置文件。

根據時序圖我們可以一步一步去學習認識IOC容器的初始化過程。

2019-06-08:更爲詳細的IOC運行時序圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章