Spring之IOC 學習筆記

2021-07-12 04:32:44 字數 2269 閱讀 6777

**

ioc

ioc理論的背景

依賴注入

(di)

ioc的好處

ioc的通俗理解 **

ioc

ioc(inversionof control,

控制反轉)是

spring

的核心,貫穿始終。所謂

ioc,對於

spring

框架來說,就是由

spring

來負責控制物件的生命週期和物件的關係:

傳統開發模式:物件之間相互依賴

(如自己找女朋友)

ioc開發模式:

ioc容器安排物件之間的依賴

(如婚介,會按照要求給你提供)

所有的類都會在

spring

容器中登記,告訴

spring"你"

是什麼,需要什麼,

spring

會在系統執行到適當時主動提供所需要的東西,同時把"你

"交給需要你的東西,所有類的建立、銷毀都由

spring

來控制,也就是說控制物件生存週期的,不再是引用它的物件,而是

spring

。對於某個具體的物件而言,以前是它控制其它物件,現在,是所有物件都被

spring

控制,所以叫

控制反轉

ioc理論的背景

多個齒輪耦合在一起共同完成某項任務,如果有乙個齒輪出現問題,就可能會影響整個系統的運轉。齒輪組齒輪之間的耦合關係與軟體系統中物件之間的耦合關係相似,物件之間的耦合關係是無法避免的

,也是必要的,這是協同工作的基礎。現在伴隨著工業級規模越來越龐大,物件之間的依賴關係也越來越複雜,經常會出現物件之間的多重依賴關係,因此架構師和設計師對系統的分析和設計將面臨著更大的挑戰,物件之間耦合度過高的系統,必然會出現牽一髮而動全身的情形,如何降低

系統之間、模組之間

和物件之間的耦合度是軟體工程永遠追求的目標之一,為了解決物件之間耦合度過高的問題,

ioc被提出,用來實現物件之間的解耦

ioc的處理方式簡單來說就是把複雜的系統分解成相互合作的物件,這些物件類通過封裝以後內部實現對於外部是透明的,從而降低了解決問題的複雜度,而且可以被靈活的被重用和擴充套件;借助於第三方來實現對具有依賴關係物件關係之間的解耦

(控制權上交給了第三方

ioc容器

,起到了類似粘合劑的作用,把系統中的所有物件粘合在一起發揮作用,這就是

ioc容器被稱作粘合劑的由來)

物件之間的依賴關係降低到了最低,參與開發的每個成員,只需要實現自己的類就行了

為什麼叫控制反轉

軟體系統沒有引入

ioc容器之前,如圖

1 object:a

依賴於objectb, object:a

在進行初始化或執行到某一點時,自己必須生動地建立物件

b,或者使用已經建立的

object:b

,無論是建立還是使用

object:b

,控制權依然在自己手中 引入

ioc容器之後,如圖

2 object:a

和objectb

失去了直接的聯絡,所以但執行到

object:a

需要object:b

時ioc

容器會主動地建立乙個物件

b注入到

object:a

所需要的地方

不難看出,

objecta

獲得依賴

objectb

的過程由主動行為變成了被動行為,控制權顛倒了,這就是控制反轉名稱的由來。

依賴注入(di)

ioc的另外的名字叫做注入依賴

(dependency injection),

所謂的注入依賴,就是

由ioc

容器在執行期間,動態地將某種依賴關係注入到物件之中

。所以依賴注入

(di)

和控制反轉

(ioc)

是從不同角度的描述同一件事情

,就是指通過引入

ioc容器,利用依賴關係注入的方式,實現物件之間的解耦

ioc的好處

ioc的通俗理解

ioc控制反**說的是建立物件例項的控制權從**控制剝離到

ioc容器控制,實際就是你在

xml檔案控制,側重於原理 di

依賴注入:說的是建立物件例項時,為這個物件注入屬性值或其他物件例項,側重於實現

Spring學習筆記 IoC

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

Spring學習筆記(一) IoC之DI

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

spring學習之IoC容器

jinnianshilongnian 寫道 理解ioc容器問題關鍵 控制的哪些方面被反轉了?1 誰控制誰?為什麼叫反轉?ioc容器控制,而以前是應用程式控制,所以叫反轉 2 控制什麼?控制應用程式所需要的資源 物件 檔案 3 為什麼控制?解耦元件之間的關係 4 控制的哪些方面被反轉了?程式的控制權發...