Spring 控制反轉(IoC)容器

(二)個人整理Spring系列:控制反轉(IoC)容器

一,什麼是控制反轉模式?  

不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器 (在 Spring 框架中是 IOC 容器) 負責將這些聯繫在一起。

二,Spring 中的 Bean?  

由Spring IoC容器所管理的對象被稱之爲bean。bean就是由Spring容器初始化、裝配及被管理的對象。  bean定義以及bean相互間的依賴關係將通過配置元數據來描述。 

  三,什麼是Spring IoC容器?  

org.springframework.beans包是Spring IoC容器的基礎。  org.springframework.beans.factory.BeanFactory接口是Spring IoC容器的實際代表者。 

 IoC容器負責容納此前所描述的bean,並對bean進行管理。   

 1,BeanFactory 接口  

 BeanFactory是IoC容器的核心接口。是工廠設計模式的實現。bean 工廠的概念是 Spring 作爲 IOC 容器的基礎。   

它的職責包括:實例化、檢索、配置應用程序中的對象及管理對象之間的關係。      

BeanFactory 支持兩個對象模型。    

單態模型:提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton 是默認的也是最常用的對象模型。對於無狀態服務對象很理想。   

 原型模型:確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。    

2,ApplicationContext接口   

org.springframework.context.ApplicationContext由BeanFactory接口派生擴展而來,因而提供了BeanFactory所有的功能。   在構建J2EE應用時,使用ApplicationContext將是更好的選擇。      context包還提供了以下的功能:   

 MessageSource, 提供國際化的消息訪問。    

資源訪問,如URL和文件。    

事件傳播,實現了ApplicationListener接口的bean。    

載入多個(有繼承關係)上下文 。

 3,配置元數據  

 Spring IoC容器將讀取配置元數據;並通過它對應用中各個對象進行實例化、配置以及組裝。      基於XML的元數據是最常用到的配置元數據格式。然而,它並不是唯一的描述格式。Spring IoC容器在這一點上是完全開放的。   當使用基於XML的配置元數據時,將在頂層的<beans/>元素中配置一個或多個<bean/>元素。     

 bean定義與應用程序中實際使用的對象一一對應。

通常情況下bean的定義包括:

服務層對象、數據訪問層對象(DAO)、類似Struts Action的表示層對象、Hibernate SessionFactory對象、JMS Queue對象等等。

四,實例化IoC容器(基於XML的元數據)  

通過ClassPathXmlApplicationContext類加載一個或多個XML文檔來實例化BeanFactory接口的實現擴展ApplicationContext類。  要從 BeanFactory 檢索 bean,只需調用 getBean() 方法,傳入將要檢索的 bean 的名稱即可。     

五,一個簡單Spring 示例  

1建立Java項目:MySpring  

2,導入Spring框架。  

3,創建JavaBean:HelloBean。編寫testHello方法。   

HelloBean.java

 4,配置applicationContext.xml 將HelloBean注入Spring容器。   

applicationContext.xml 

<?xml version="1.0" encoding="UTF-8"?>

<beans

                     xmlns="http://www.springframework.org/schema/beans"



	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"



	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

	

	<bean class="com.qu.bean.HelloBean" id="helloBean">



	</bean>

</beans>

5,導入Junit 4 測試。  

6,編寫測試類TestHello 。重寫setUp方法實例化容器,編寫testHello方法測試HelloBean的hello方法。   


               

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