本篇文章給大家分享的是有關(guān)Spring如何控制反轉(zhuǎn)IOC容器,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計團隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都近1000家中小型企業(yè)策劃設(shè)計了網(wǎng)站。
控制反轉(zhuǎn)(IoC)容器
一.什么是控制反轉(zhuǎn)模式? 不創(chuàng)建對象,但是描述創(chuàng)建它們的方式。在代碼中不直接與對象和服務(wù)連接,但在配置文件中描述哪一個組件需要哪一項服務(wù)。 容器 (在 Spring 框架中是 IOC 容器) 負責(zé)將這些聯(lián)系在一起。
二.Spring 中的 Bean? 由Spring IoC容器所管理的對象被稱之為bean。bean就是由Spring容器初始化、裝配及被管理的對象。 bean定義以及bean相互間的依賴關(guān)系將通過配置元數(shù)據(jù)來描述。 三,什么是Spring IoC容器? org.springframework.beans包是Spring IoC容器的基礎(chǔ)。 org.springframework.beans.factory.BeanFactory接口是Spring IoC容器的實際代表者。 IoC容器負責(zé)容納此前所描述的bean,并對bean進行管理。
1.BeanFactory 接口 BeanFactory是IoC容器的核心接口。是工廠設(shè)計模式的實現(xiàn)。bean 工廠的概念是 Spring 作為 IOC 容器的基礎(chǔ)。 它的職責(zé)包括:實例化、檢索、配置應(yīng)用程序中的對象及管理對象之間的關(guān)系。 BeanFactory 支持兩個對象模型。 單態(tài)模型:提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton 是默認的也是最常用的對象模型。對于無狀態(tài)服務(wù)對象很理想。 原型模型:確保每次檢索都會創(chuàng)建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。
2.ApplicationContext接口 org.springframework.context.ApplicationContext由BeanFactory接口派生擴展而來,因而提供了 BeanFactory所有的功能。 在構(gòu)建J2EE應(yīng)用時,使用ApplicationContext將是更好的選擇。 context包還提供了以下的功能: MessageSource, 提供國際化的消息訪問。 資源訪問,如URL和文件。 事件傳播,實現(xiàn)了ApplicationListener接口的bean。 載入多個(有繼承關(guān)系)上下文 。
3.配置元數(shù)據(jù) Spring IoC容器將讀取配置元數(shù)據(jù);并通過它對應(yīng)用中各個對象進行實例化、配置以及組裝。 基于XML的元數(shù)據(jù)是最常用到的配置元數(shù)據(jù)格式。然而,它并不是***的描述格式。Spring IoC容器在這一點上是完全開放的。 當(dāng)使用基于XML的配置元數(shù)據(jù)時,將在頂層的
四.實例化IoC容器(基于XML的元數(shù)據(jù)) 通過ClassPathXmlApplicationContext類加載一個或多個XML文檔來實例化BeanFactory接口的實現(xiàn)擴展 ApplicationContext類。 要從 BeanFactory 檢索 bean,只需調(diào)用 getBean() 方法,傳入將要檢索的 bean 的名稱即可。
五.一個簡單Spring 示例
1.建立Java項目:MySpring
2.導(dǎo)入Spring框架。
3.創(chuàng)建JavaBean:HelloBean。編寫testHello方法。
HelloBean.java
view plaincopy to clipboardprint?
size=2> package com.qu.bean;
public class HelloBean {
public String sayHello(String name){
return String.format("%1$s : Hello World!", name);
}
}
package com.qu.bean;
public class HelloBean {
public String sayHello(String name){
return String.format("%1$s : Hello World!", name);
}
}
4.配置applicationContext.xml 將HelloBean注入Spring容器。
applicationContext.xml
view plaincopy to clipboardprint?
size=2> version="1.0" encoding="UTF-8"?>
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">
version="1.0" encoding="UTF-8"?>
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">
view plaincopy to clipboardprint?
size=2>helloBean.xml
helloBean.xmlview plaincopy to clipboardprint?
version="1.0" encoding="UTF-8"?>
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">
version="1.0" encoding="UTF-8"?>
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">
view plaincopy to clipboardprint?
size=2>
5.導(dǎo)入Junit 4 測試。
6.編寫測試類TestHello 。重寫setUp方法實例化容器,編寫testHello方法測試HelloBean的hello方法。
view plaincopy to clipboardprint?
size=2> TestHello.java
TestHello.javaview plaincopy to clipboardprint?
size=2>
package com.qu.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.qu.bean.HelloBean;
import junit.framework.TestCase;
public class TestHello extends TestCase {
private ApplicationContext ctx;
private HelloBean hello;
protected void setUp() throws Exception {
super.setUp();
this.ctx = new ClassPathXmlApplicationContext(
new String[] {"ApplicationContext.xml","OtherXML/helloBean.xml"});
this.hello = (HelloBean) this.ctx.getBean("helloBean");
}
public void testSayHello(){
assertEquals("Java : Hello World!", this.hello.sayHello("Java"));
}
}
以上就是Spring如何控制反轉(zhuǎn)IOC容器,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。