IOC控制反轉和DI依賴注入區別

2021-08-30 22:48:57 字數 1127 閱讀 9129

ioc控制反**說的是建立物件例項的控制權從**控制剝離到ioc容器控制,實際就是你在xml檔案控制,側重於原理。

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

它們是spring核心思想的不同方面的描述。

di 和 ioc

di和ioc是差不多的概念。

乙個重要特徵是介面依賴,是把物件關係推遲到執行時去確定.

di是乙個初始化例項的過程,分為三種1.setter based 2.constructor based 3.inte***ce based,在spring 中就是應用前兩種;但又不僅僅是初始化例項,而且是運用介面的概念去實現這種注入依賴。靜態地看,只是依賴乙個介面,但實際執行起來,是依賴乙個實現了該介面的具體類。

ioc就是面向介面程式設計的應用

1.乙個通常的做法(非面向介面程式設計的方法),物件a依賴物件b,b會作為a的屬性,可以理解為a直接控制b;

2.ioc的做法,物件a依賴於介面c,而不直接依賴於實現了介面c的b,也就是a不能直接控制是哪個具體實現了c的b去做相應的事情,而是由我們控制可以由哪個實現了介面c的b去處理,也就是控制反過來了,是由b來決定了,而不是由a,實現就是面向介面程式設計。

aop

aop是動態**的應用,將具體業務和相應的其它方面(比如日誌,許可權之類的)劃分開來,業務不會知道還有沒有其它的功能來輔助,需要的話我就給他加上乙個配置就可以,而不用去修改業務**。

原先是這個樣子

{ //日誌

//許可權

//業務**

} 現在

{ //業務**

} 而許可權和日誌則寫在其它的類advice中,只要在配置中說明在呼叫業務方法時(或前,或後,或別的),呼叫一下advice就ok了。很容易把乙個方面,比如許可權或日誌從業務**中剝離出來。

在spring中,實現aop的流程如下:

1.定義業務介面

2.定義業務實現類

3.定義interceptor注入類

4.配置bean,設定class為proxyfactorybean

設定其三個屬性1.)proxyinte***ces為1

2.)interceptornames為3

3.)target為2

控制反轉 IOC 和依賴注入 DI

控制反 從拆解字面上的意思,控制,是指物件建立 銷毀和管理 單例 的控制權,傳統程式設計上這個是交給呼叫方來控制。反轉,是指這些控制權優傳統上的呼叫方反轉為類似乙個容器的東西,統一調配和管理。依賴注入 依賴,其實就是耦合,這裡更多的是呼叫方和操作物件的耦合。注入是指,將某些耦合關係從乙個東西注入到另...

依賴注入(DI)和控制反轉(IOC)

依賴注入是用於實現控制反轉的最常見的方式之一。依賴注入的思想是 當乙個類對另乙個類有依賴時,不在該類內部對依賴的類進行例項化,而是有乙個配置好了的bean.xml檔案,告訴容器所依賴的類,在例項化該類時,容器自動注入乙個依賴的類的例項。傳統的方法就是在類中先例項化依賴的類,然後再呼叫該類中的方法。p...

依賴注入DI和 控制反轉IoC

ioc inversion of control 控制反轉 di dependency injection 依賴注入 依賴注入和控制反轉說的實際上是同乙個東西,它們是一種設計模式,這種設計模式用來減少程式間的耦合 使用依賴注入,最重要的一點好處就是有效的分離了物件和它所需要的外部資源,使得它們鬆散耦...