Spring框架中IOC控制反轉和DI依賴注入區別

2021-08-07 20:08:40 字數 1288 閱讀 4121

標籤: ioc

spring

框架interceptor

程式設計aop

2011-03-21 22:53

10803人閱讀收藏 

舉報

【spring】(17)

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

spring框架 IOC控制反轉

spring的核心機制 ioc,通常被稱為控制反轉,是一種設計思想,對於某個具體的物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以這叫控制反轉。ioc的乙個重點是在系統執行中,動態的向某個物件提供它所需要的其他物件。這一點是通過di dependency injection,...

Spring框架(二)IOC控制反轉

現階段裡隨著框架的深入式學習,環境的編寫越來越多,相反程式碼卻逐步縮減 匯入核心容器的四個jar包外加乙個日誌jar 到了spring這裡嘞,依然躲不過 xml 的對映,相比於mybatis環境的 dtd,spring則是改換成了dtd公升級版的 schma,從而更具擴充套件性。就像下面的一段xml...

spring中IOC控制反轉

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