spring學習筆記(IOC-控制反轉) – JAVA編程語言程序開發技術文章

Spring為編寫企業應用程序提供瞭輕量的解決方案,同時仍然支持使用聲明式事務、 用RMI或web service遠程調用、以及使用多種方式來將數據持久化到數據庫。

和其他框架一樣:spring也有一個主配置文件:applicationContext.xml。

IOC:控制反轉。也有人這樣叫;DI:依賴註入。

AOP:面前切面編程。

所謂控制反轉:以前我們要調用某個類的方法。首先是new這個類。然後再調用這個方法。控制權在我們自己手上。反轉:顧名思義就是控制權交換瞭角色。由spring來為我們創建對象瞭。而不是自己創建瞭。這裡就用到瞭一個設計模式:工廠模式:實際上spring創建的對象就是由工廠來完成的。我們就能獲取到該對象。

首先來看一個簡單的例子:有一個person類。它有work的方法。現在我們要在客戶端調用這個方法:如果不用spring的話。肯定就是直接new一個對象調用瞭。

現在我們讓spring來為我們創建這個對象。首先要在applicationContext.xml裡編寫一個bean類。

[java] 
<span style="white-space:pre">  </span><bean id="chinese" class="com.young.person"></bean> 
在客戶端調用:
[java]
<span style="white-space:pre">  </span>ClassPathResource cpr=new ClassPathResource("applicationContext.xml");//加載配置文件 
    XmlBeanFactory factory=new XmlBeanFactory(cpr);//獲取類工廠對象 
    Person chinese= (Person)factory.getBean("chinese");//獲取類對象 
    System.out.println(chinese.sayHi("張三"));//調用方法 
就可以瞭。這樣看是不是很麻煩呢。是的。這樣看的確不如直接new一個對象簡單。但是。如果你的項目大瞭。你就能省很多事瞭。
那我們在來一個復雜一點的。現在person類要借助工具來工作。我們再寫個接口Tools工具,它有一個方法getHelp。在一個toolsA實現tools工具裡的方法。

首先。我們可以在person類中寫一個私有的Tools變量。然後給他加上setter方法。在work方法中直接用這個變量直接調用getHelp方法就行瞭。
我們還是要在applicationContext.xml文件中配置這個toolsA實現類。然後把他放到person的bean中。

[java]
<span style="white-space:pre">  </span><bean id="tool" class="com.young.toolsA"></bean> 
    <bean id="person" class="com.young.person"> 
    <property name="這是person類裡的接口的變量名" ref="tool"></property> 
    </bean> 
如果還要調用其他的也就可以直接寫好實現類。在person類中存放一個類變量。或接口也行。
然後在配置文件中配置實現類。並將其放進person類的屬性值裡。就能直接調用瞭。

這就是傳說中的依賴註入。或者說控制反轉。再你調用方法之前。它會自動幫你創建好對象。以上其實是依賴註入的其中一種方式:還可用構造器來註入值。例:www.aiwalls.com

[java] 
<span style="white-space:pre">  </span>public person(Tools t,Test tt){ 
        this.t=t; 
        this.tt=tt; 
    } 
如果是這樣配置的。那麼在配置文件中也要改瞭。不能再用property屬性瞭。
[java] 
<span style="white-space:pre">  </span><constructor-arg ref="test"></constructor-arg> 
    <constructor-arg ref="tool"></constructor-arg> 

作者:yy008871

You May Also Like