快速理解Spring中的IoC

2021-09-26 09:21:10 字數 1893 閱讀 9395

控制反轉(inversion of control,縮寫為ioc),是物件導向程式設計中的一種設計原則,可以用來減低計算機**之間的耦合度。其中最常見的方式叫做依賴注入(dependency injection,簡稱di),還有一種方式叫「依賴查詢」(dependency lookup)。通過控制反轉,物件在被建立的時候,由乙個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。

結合例項

服務層

@service

public

class

demoserviceimpl

implements

idemoservice

@service註解當action需要使用demoserviceimpl 的的例項時,就可以由spring建立好demoserviceimpl的例項 ,然後注入給action:在action只需要宣告乙個變數來接收由spring注入demoserviceimpl的例項即可。

控制層

class

democontroller

在其他地方需要使用到demoserviceimpl例項時,加入@autowired註解,這表明,我要例項化乙個「demoservice",你spring快幫我例項化好,然後給我。

當spring看到 「demoservice」 上的註解 @autowired 的時,可以知道,action中需要用到乙個demoserviceimpl 的例項,此時就會把自己建立好demoserviceimpl的例項並注入給action中的"demoservice"變數,幫助完成demoservice的例項化,就不用通過 idemoservice demoservice=new demoserviceimpl(); 這種原始方式去例項化demoservice了。

如果沒有spring,那麼當action需要使用demoserviceimpl時,必須通過idemoservice demoservice=new demoserviceimpl();主動去建立例項物件,但使用了spring之後,action要使用demoserviceimpl時,就不用主動去建立demoserviceimpl的例項了,建立demoserviceimpl例項已經交給spring來做了,spring把建立好的demoserviceimpl例項給action,action拿到就可以直接用了。

也就是說由原來的主動建立demoserviceimpl例項後馬上就能使用,變成了被動等待由spring建立好demoserviceimpl例項後再注入到"demoservice"變數中,控制權已經」反轉"了。

原來主動權在自己手上,自己要使用"demoserviceimpl"類的例項,自己主動去new乙個出來馬上就可以使用了,但現在自己不能主動去new "demoserviceimpl"類的例項,new "demoserviceimpl"類的例項的權力已經被spring拿走了,只有spring才能夠new 「demoserviceimpl"類的例項,而action只能等spring建立好"userserviceimpl"類的例項後,再「懇求」spring把建立好的"userserviceimpl"類的例項給他,這樣他才能夠使用"userserviceimpl」。

這就是spring核心思想「控制反轉」,也叫「依賴注入」,「依賴注入」也很好理解,action需要使用demoserviceimpl幹活,那麼就是對demoserviceimpl產生了依賴,spring把acion需要依賴的demoserviceimpl注入(也就是「給」)給action,這就是所謂的「依賴注入」。對action而言,action依賴什麼東西,就請求spring注入給他;對spring而言,action需要什麼,spring就主動注入給他

參考文章:

在Spring中對IoC的理解

依賴注入的幾種方式 ioc的優缺點 ioc控制反轉 baiinversion of control,英文縮寫為ioc 把建立物件的權利交給框架,是框架的重要特徵,ioc不是一種技術,而是一種設計思想,並非物件導向程式設計的專用術語。它包括依賴注入 dependency injection,簡稱di ...

對Spring中IOC思想的理解

獲取使用者資料傳統實現方式為 1 iuserdao介面 package indi.stitch.dao public inte ce iuserdao 2 userdaoimpl實現類 package indi.stitch.dao public class userdaoimpl implemen...

Spring控制反轉 IoC 的理解

spring框架的核心就是控制反轉 inversion of control 和依賴注入 dependency injection 通過這兩方面來實現松耦合。使用ioc,物件是被動的接受依賴類,而不是自己主動的去找。容器在例項化的時候主動將它的依賴類注入給它。可以這樣理解 控制反轉將類的主動權轉移到...