Spring學習筆記(一) IoC之DI

2021-05-23 15:06:40 字數 1060 閱讀 2846

spring的乙個核心概念就是ioc,所謂ioc,即inversion of control,中文譯為控制反轉。其核心思想即高層模組要依賴於抽象,而不是依賴於底層模組,換句話說,也就是實現必需依賴於抽象,而不是抽象依賴於實現。

這裡所說的高層模組是指與業務相聯絡的模組。而低層模組是指與底層實現相聯絡的模組,如資料庫操作模組,硬體相關的模組等。

看下面乙個例子:

業務模組business直接呼叫了實現模組的方法,也即高層模組與底層模組產生了依賴關係。當業務發生變更時,例如需要使用sql server了,這時我們不得不去修改business的**。過了兩天,客戶又要使用oracle了,這時程式設計師就該罵人了,呵呵。

下面就來用ioc的方法來改造這個應用:

通常所說的高層依賴於抽象,我們一般是把低層的應用抽象成介面,低層實現介面,高層依賴於介面。這樣,需求變更時,只需建立不同的實現即可。

如果a依賴於b,那麼b即具有控制權,如果b是具體實現,這是我們不願看到的,所以要轉移這種依賴關係,將控制權轉移到抽象的方法,讓抽象的方法具有控制權。

實際上,ioc的實現有兩種方式,即dependency injection 與service locator,spring採用的是前者,中文譯為依賴注入(di)。

di的實現方式有三種:inte***ce injection(type 1 ioc),setter injection(type 2 ioc), 和 constructor injection(type 3 ioc)。

spring鼓勵使用type 2的di方式,因為setter有明確的方法名稱可以用來了解注入物件的作用或型別,使用set***()這樣的方法在語義上也要比另外兩種方法好得多。

下面是使用了type 2的business類:

public class business

......

publilc dobusinesss(message message)

......

}不要擔心dbmanage的注入,spring容器會處理這些事情。程式設計師做的只需是配置檔案的設定(xml或properties檔案),讓sping在執行時期根據配置檔案的設定,建立物件之間的依賴關係。

Spring之IOC 學習筆記

ioc ioc理論的背景 依賴注入 di ioc的好處 ioc的通俗理解 ioc ioc inversionof control,控制反轉 是 spring 的核心,貫穿始終。所謂 ioc,對於 spring 框架來說,就是由 spring 來負責控制物件的生命週期和物件的關係 傳統開發模式 物件之...

Spring學習筆記 IoC

getbean 方法 引數為class時要保證配置檔案中bean唯一 構造器注入 通過constructor arg節點注入 工廠方法注入 很少使用 繼承 通過在bean中新增屬性parent指定繼承的父bean,也可以忽略父 bean 的 class 屬性,此時 abstract屬性 必須設為 t...

spring學習筆記一 IOC配置使用

1.bean的命名 每個bean可以有乙個或多個id 或稱之為識別符號或名字 在這裡我們把 第乙個id稱為 識別符號 其餘id叫做 別名 這些id在ioc容器中必須唯一。如何為bean指定id呢,有以下幾種方式 一 不指定id,只配置必須的全限定類名,由ioc容器為其生成乙個標識,客戶端必須通過介面...