Spring容器啓動過程

一、一切從手動啓動IoC容器開始

 

第一行代碼:ClassPathResource的作用是起到了資源定位的作用。通常情況下,Spring的配置信息使用文件來描述,通過這樣一行代碼,指明瞭需要加載的資源的位置,並且使用Spring能夠理解的Resource接口的形式將資源描述出來。

第二行代碼:DefaultListableBeanFactory是一個純粹的IoC容器類,它是這個Spring的一個基礎的IoC容器類,其他的一個IoC容器都是以這個類爲基礎進行擴展的。這樣代碼只是定義了一個IoC容器,它不具有任何其他的能力。

第三行代碼:XmlBeanDefinitionReader是一個配置文件讀取器。它實現了BeanDefinitionReader接口,它能夠按照Spring配置文件,將其中的配置信息轉換爲spring內部可以識別的信息(BeanDefinition)。注意,在這裏它的構造函數需要一個BeanDefinitionRegistry類型的參數,BeanDefinitionRegistry接口提供了一個回調函數,通過這個回調函數可以向IoC容器註冊bean的定義信息。DefaultListableBeanFactory實現了這個接口。

第四行代碼:調用loadeBeanDefinitions方法,通過給定的Resource資源,從中讀取出spring的配置信息,轉換爲BeanDefinition,然後再調用BeanDefinitionRegistry的回調函數進行註冊。

通過以上的四行代碼,完成了spring容器的啓動。

二、容器啓動過程

1. 定位

在spring中,使用統一的資源表現方式Resource。根據不同的情況進行不同的選擇。上述程序中,採用了編程式的資源定位方法,使用ClassPathResource定位位於classpath下的資源文件。

2. 加載

在加載這個過程中,主要工作是讀取spring配置文件,解析配置文件中的內容,將這些信息轉換成爲Spring內容可以理解、使用的BeanDefinition。

3. 註冊

加載過配置文件後,就將BeanDefinition信息註冊到BeanDefinitionRegistry中,通常情況下Spring容器的實現類都實現這個接口。

 

三、資源加載實現

首先看一下XmlBeanDefinitionReader中的loadBeanDefinitions方法的實現


 

 


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