Spring 中的迴圈依賴

2021-08-28 22:51:04 字數 511 閱讀 1837

a 例項依賴 b 例項,b 例項依賴 c 例項,c 例項依賴 a 例項,依賴關係形成乙個環,就稱為迴圈依賴。

prototype 作用域的迴圈依賴:迴圈依賴是對於單例來說的,spring 容器對於 prototype 作用域的 bean 不進行快取,因此無法完成依賴注入。

構造器迴圈依賴(單例):始終都在等待依賴建立成功,陷於死迴圈,無法解決。

setter 迴圈依賴(單例):在 bean 例項建立成功還未進行注入時,建立乙個可以得到這個 bean 的 objectfatory,並將這個 objectfatory 加入快取。解決迴圈依賴如下圖:

xml 中的 ref 關係指的就是上文提到的依賴關係,依賴的 bean 是當前 bean 的屬性。

但有時候依賴關係並不會這麼明顯,但又確實存在,這時可以使用 depend-on。depend-on 依賴不允許形成閉環。

Spring 中的迴圈依賴

a 例項依賴 b 例項,b 例項依賴 c 例項,c 例項依賴 a 例項,依賴關係形成乙個環,就稱為迴圈依賴。prototype 作用域的迴圈依賴 迴圈依賴是對於單例來說的,spring 容器對於 prototype 作用域的 bean 不進行快取,因此無法完成依賴注入。構造器迴圈依賴 單例 始終都在...

spring 迴圈依賴

構造器依賴無法解決,使用 快取解決field屬性依賴。a的屬性依賴b,b的屬性依賴a 建立a,設定依賴屬性b,發現b沒有建立,建立b,設定依賴屬性a,先從一級快取singletonobjects中去獲取。如果獲取到就直接return 如果獲取不到或者物件正在建立中 issingletoncurren...

spring迴圈依賴

關於spring迴圈依賴網上有太多的例子,本文只是簡單的記錄一下。本文預設讀者熟悉spring核心之一控制反轉和依賴注入 在我們的開發過程中,我們基本上對迴圈依賴是無感且不用去考慮如何解決。如上圖中classa使用屬性注入了classb,classb使用屬性注入了classa。如上圖這就是產生了迴圈...