Spring框架(二)依賴注入概念

2021-07-25 16:42:54 字數 1923 閱讀 8302

spring中被人使用最多的可能就是他的依賴注入了,比如ssh整合的時候,必然會使用spring的依賴注入。依賴注入簡寫di,全稱:dependency injection。依賴注入也有另外乙個名字叫做控制反轉(ioc)。

在講解spring的依賴注入的使用之前,我們需要先搞明白什麼是依賴注入。接下來舉個例子:

一般領導都會有乙個秘書,要秘書有什麼用呢?估計大家都知道,可以把一些事情交給秘書來做,減少領導的工作量,這樣領導有更多精力去處理那些更重要的事情。比如,領導要喝水,如果沒有秘書就是自己去倒水,浪費時間;如果有秘書,就是秘書倒好誰遞到領導手上,領導就沒有畢業為這點小事分心了。

上面例子中的秘書就好比依賴注入的框架,秘書倒好水、泡好茶葉,遞給領導。依賴注入框架就是將某個物件(茶水)遞給需要此物件(茶水)的物件(領導)。接下來用**的方式來演示上面的例子。

例子1:領導自己倒水。

建立乙個water類:

package com.androidxx.ioc;

/** * 水

* @author yangjw

* */

public class water

}

建立乙個leader類:

package com.androidxx.ioc;

/** * 領導

* @author yangjw

* */

public class leader

}

測試類leadertest:

package com.androidxx.ioc;

import static org.junit.assert.*;

import org.junit.test;

public class leadertest

}

在以上的例子中,leader中親自建立的water物件,就好比領導親自去倒水喝。這樣在程式中就存在領導和水之間的耦合非常大,如果領導現在不想和茶水了,想喝汽水,就需要改leader類中的原始碼了。這樣在實際開發中非常麻煩,乙個類還好說,如果有1000個這樣的類需要修改,那程式設計師會崩潰。如果領導和水之間是通過秘書關聯的,那領導就不要親自去建立water物件了,至於是要和汽水、咖啡、茶水都交由秘書去辦,這樣就輕鬆多了,維護起來就方便多了。接下來看一下有秘書的例子:

例子2:領導要喝水,秘書去倒好,給領導。

此例子在上面的例子1的基礎上修改了leader類和新增了secretary(秘書)類,water類不變(同上)。

秘書secretary類:

package com.androidxx.ioc;

/** * 秘書

* @author yangjw

* */

public class secretary

}

領導leader類:

package com.androidxx.ioc;

/** * 領導

* @author yangjw

* */

public class leader

}

測試類:

package com.androidxx.ioc;

import static org.junit.assert.*;

import org.junit.test;

public class leadertest

}

以上例子,可以看到water類已經不在leader類中建立了,這樣leader和water就沒有耦合了,而是將water交由secretaty建立,secretary建立好之後交給leader。這就是依賴注入。

不甘平凡,才會不平凡

spring框架學習(二)依賴注入

spring 框架為我們提供了三種注入方式,分別是 set注入,構造方法注入,介面注入。介面注入不作要求,下面介紹前兩種方式。1,set注入 採用屬性的 set方法進行初始化,就成為 set注入。1 給普通字元型別賦值。public class user publicvoid setusername...

spring框架學習(二)依賴注入

spring框架學習 二 依賴注入 spring為我們提供了三種注入方式 set注入,構造方法注入和介面注入。介面注入方式不做說明。以下介紹前兩種注入方式。一 set注入 2.給物件賦值,同樣提供物件的set方法 public class user public void setuserservic...

spring框架 DI依賴注入(二)

一 set方法的注入 1.介紹 2.展示 先寫乙個userdao介面 package com.hnpi.dao public inte ce userdao 實現這個介面的方法 package com.hnpi.dao.impl import com.hnpi.dao.userdao public ...