控制反轉(ioc:inversion of control):
應用本身不負責依賴物件的建立與維護,而是由外部容器負責(ioc容器)。就是說控制權由應用轉移到外部容器。控制權的轉移就是所謂的反轉。 控制反轉一般分為兩種型別,
依賴注入(dependency injection,簡稱di)(流行)和依賴查詢(dependency lookup)(不流行)。
依賴注入(di:dependency injection):
在執行期,由外部容器動態地將物件注入到元件中。如下(注入persondao):
public class personservicebean
如果不採用依賴注入,則必須這樣:
public persondao persondao = new persondaobean();
這樣的話service和dao是緊密耦合的。使用spring可以把他們解耦,而且可以注入任何實現persondao的類,而不僅限於persondaobean,要更改注入的實現類可以方便的通過xml配置檔案來實現。
依賴注入有三種方式:
spring ioc/di的過程:
遍歷所有被註解的類和配置檔案,為被註解或配置的類建立例項bean
再次遍歷這些被註解的類和配置檔案,如果發現某個bean裡面的某個成員被註解或配置為需要注入,則為其注入相應的bean
預設地,這些bean都是單例的
依賴查詢:
例子:
public class mybusniessobject……
控制反轉 依賴注入和控制反轉
依賴注入 di 和控制反轉 ioc 基本是乙個意思,因為說起來誰都離不開誰。簡單來說,a依賴b,但a不控制b的建立和銷毀,僅使用b,那麼b的控制權交給a之外處理,這叫控制反轉 ioc 而a要依賴b,必然要使用b的instance,那麼 通過a的介面,把b傳入 通過a的構造,把b傳入 通過設定a的屬性...
依賴注入和控制反轉
還是從上次機房合作驗收說起,其中乙個特別厲害的師姐提到了依賴注入和控制反轉,剛剛聽到這個的時候,感覺很熟悉,就是不知道在 看到過,想起了公尺老師說的那句話,不怕不知道,就怕不知道 不怕不知道它,就怕遇到了不知道它是什麼意思,我可是上公升到了不知道的第二個階段。廢話不說了,直奔主題吧。記得在哪見過,就...
依賴注入和控制反轉
本文 ioc inversion of control 控制反轉 di dependency injection 依賴注入 要想理解上面兩個概念,就必須搞清楚如下問題 1 參與者有誰 一般有三方參與者,乙個是某個物件 乙個是ioc di容器 另乙個是物件的外部資源。2 誰依賴於誰 當然是某個物件依賴...