詳解Spring中的Ioc控制反轉

2021-12-29 23:01:31 字數 1716 閱讀 2498

ioc概念

控制反轉(inversion of control)是乙個重要的物件導向程式設計的法則來削減電腦程式的耦合問題。 它還有乙個名字叫做依賴注入(dependency injection)。ioc不是什麼技術,它是一種設計模式。

例項演示

為了更好的說明ioc,我為大家舉乙個簡單的例子,如有這樣乙個描述:某公司新成立了乙個專案組,專案組有若干成員和乙個專案組長,專案組成立後第一次開會上,作為專案組長的小李按照慣例首先做了簡短的自我介紹。

根據上述的描述,如果我們寫出如下**和類圖:

雙擊**全選12

3456

78910

11public

class

li }

public

class

team

}具體類圖如下:

上述的**,應該說基本完成了相關的需求,但是仔細考慮之後就會發現,上述的**是根據具體的場景描述進行的,並沒有進行抽象,這樣就導致我們不能靈活的安排專案組長去做開場,即根據現在的**,開場自我介紹被繫結給了小李而不能安排給其他人。為了解決上述的問題,我們引入首先引入leader介面,相關**和類圖如下:

雙擊**全選12

3456

78910

1112

1314

1516

17public

inte***ce

leader

public

class

li implements

leader

}public

class

team

}具體類圖如下:

雖然上述的**可以讓我們安排給其他成員開場,但是我們可以看出team類同時依賴leader介面和li類,並沒有達到我們所期望的team僅僅依賴於leader介面的目的,如何解決這個問題呢?當然是引入boss,由boss決定具體由誰擔任專案組長。具體類圖和**如下:

雙擊**全選12

3456

78910

1112

1314

1516

1718

1920

2122

2324

public

inte***ce

leader

public

class

li implements

leader

}public

class

team

}public

class

boss

}具體類圖如下:

通過以上**和圖示,我們可以看出,通過引入老闆類,我們將專案小組和具體由誰擔任專案組長進行解耦。

對應上述例子,我們再來講解一下ioc,ioc從字面上看分為控制和反轉,控制在上面的例項中就是具體由誰擔任專案組長,而反轉就是將決定誰擔任專案組長轉移到boss類中。通俗理解就是將介面的具體實現類(li)的控制權從呼叫類(team)中分離轉交給第三方(boss)決定。

spring中IOC控制反轉

ioc 控制反轉 意思就是將物件的建立權力交給spring 提前在spring容器中構建好了spring物件,如此我們可以通過spring 容器直接呼叫getbean name屬性或者id名稱 獲取對應的物件 將來我們可以從classpath目錄下載入到我們的spring主配置檔案.凡是交給spri...

Spring 控制反轉IoC

1,ioc理論背景 在使用物件導向語言開發的系統中,不同物件之間相互協作得以實現業務邏輯。就像是一塊機械手錶,通過不同齒輪的協作,讓時針 分針 秒針精確的執行。如果乙個齒輪發生故障,那麼整塊手錶的功能就要受到影響。手錶齒輪之間的關係和軟體系統中物件的耦合關係很相似。物件之間的耦合關係是必要的,也是無...

Spring中IOC和AOP詳解

我們是在使用spring框架的過程中,其實就是為了使用ioc容器 依賴注入,和aop 面向切面程式設計,這兩個是spring的靈魂。主要用到的設計模式有工廠模式和 模式。ioc就是典型的工廠模式,通過sessionfactory去注入例項。aop就是典型的 模式的體現。在傳統的程式設計中,當呼叫者需...