1. 程式人生 > >Spring的基本原理-容器和bean

Spring的基本原理-容器和bean

  在Spring中,那些組成你應用程式的主體及由Spring Ioc容器所管理的物件,都被稱之為bean。簡單來講,bean就是Spring容器的初始化、配置及管理的物件。除此之外,bean就與應用程式中的其他物件沒有什麼區別了。而bean定義以及bean相互間的依賴關係將通過配置元資料來描述。

  容器:

  org.springframework.beans.factory.BeanFactory是Spring Ioc容器的實際代表者,Ioc容器負責容納此前所描述的bean,並對bean進行管理。

  在Spring中,BeanFacyory是Ioc容器的核心介面。它的職責包括:例項化、定位、配置應用程式中的物件及建立這些物件間的依賴。

  Spring為我們提供了許多易用的BeanFactory實現,XmlBeanFactory就是最常用的一個。該實現將以XML方式描述組成應用的物件以及物件間的依賴關係。XmlBeanFactory類將獲取此XML配置元資料,並用它來構建一個完全可配置的系統或應用。


  從上圖可以看到,Spring Ioc容器將讀取資料元配置,並通過它來對應用中各個物件進行例項化、配置及組裝。通常情況下我們使用簡單直觀的XML來作為配置元資料的描述格式。在XML配置元資料中我們可以對那些我們希望通過Spring Ioc容器管理的bean進行定義。

  注:Spring Ioc容器至少包含一個bean定義,但大多數情況下會有多個bean定義。bean定義與應用程式中實際使用的物件一一對應。通常bean的定義包括:服務處物件、資料訪問層物件、類似Struts Action的表示層物件、Hibernate SessionFactory物件、JMS Queue物件等等。通常bean的定義並不與容器中的領域物件相同,因為領域物件的建立和載入必須依賴具體的DAO和業務邏輯。

  以下是一個基於XML的配置元資料的基本結構:


  Spring Ioc容器的例項化:


  XML配置元資料的結構:將XML配置檔案拆分成多個部分是非常有用的。為了載入多個XML檔案生成一個ApplicationContext例項,可以將檔案路徑作為字串組傳給ApplicationContext構造器。而beanFactory將通過bean defintion reader從多個檔案中讀取bean定義,這中方式各個配置並不會查覺到它們與其他配置檔案的組合。另外一種方式就是使用一個或者多個<import/>元素來從另外一個或多個檔案載入bean檔案。所有的<import/>元素必須在<bean/>元素之前完成bean定義的匯入。例子:


  需要注意的就是根據Spring XML配置檔案的Schema,被匯入的檔案必須是完全有效的XML bean定義檔案,且跟節點必須是<beans/>元素。