spring是如何解決物件相互依賴的

2021-08-14 13:09:24 字數 444 閱讀 6218

第一種,解決setter物件的依賴,就是說在a類需要設定b類,b類需要設定c類,c類需要設定a類,這時就出現乙個死迴圈,

spring的解決方案是,初始化a類時把a類的初始化bean放到快取中,然後set b類,再把b類的初始化bean放到快取中,

然後set  c類,初始化c類需要a類和b類的bean,這時不需要初始化,只需要從快取中取出即可.

該種僅對single作用的bean起作用,因為prototype作用的bean,spring不對其做快取

第二種,解決構造器中對其它類的依賴,建立a類需要構造器中初始化b類,建立b類需要構造器中初始化c類,建立c類需要構造器中又要初始化a類,因而形成乙個死迴圈,spring的解決方案是,把建立中的bean放入到乙個「當前建立bean池」中,在初始化類的過程中,如果發現bean類已存在,就丟擲乙個「beancurrentincreationexception」的異常

Spring是如何解決setter迴圈注入的

對於該問題,相信不少人面試中遇到過,原始碼也去看過,這裡我想說的是,看原始碼的方式。單純的去看原始碼是毫無意義的,看完了就忘了,最多也只是零星記得有那麼些東西,我覺得要想做的真正理解還是要帶著問題去看。假設現在有a b兩個類,a b相互迴圈依賴,那麼我們就帶著這個問題去找 首先getbean a 必...

Spring 是如何 解決迴圈依賴的問題

初次遇到這個問題是在開發中,但是沒有深究,前一陣參加面試就被問到這個問題,當時真是非常後悔,怎麼沒有好好研究一下呢。現在來亡羊補牢吧。迴圈依賴的定義 迴圈依賴就是迴圈引用,就是兩個或多個bean 相互之間的持有對方,比如circlea 引用circleb circleb 引用circlec,circ...

Spring如何解決迴圈依賴

比如 在a類引入b物件,在b類引入a物件,建立a的時候需要依賴b,建立b的時候需要依賴a,而各自建立物件的時候,其互相依賴的物件還沒有建立完成,就導致各自都無法成功建立物件。這就是迴圈依賴。class aclass b解決迴圈依賴的方法很簡單,如下所示,先例項化a和b,此時都沒初始化,即都沒有對各自...