面試官經常會問:spring的兩個bean可以迴圈依賴嗎?
答:spring預設單例支援迴圈依賴
我們首先在乙個spring專案裡面準備兩個bean,讓它們互相依賴注入:
然後如圖建立乙個配置類,用來掃瞄bean
@componentscan
("com.zyc"
)public
class
最後建立乙個test類:
public
class
test
}
檢視控制台輸出:
spring容器初始化時,通過配置類掃瞄到這兩個bean,完成其依賴注入,觸發了它們的構造器方法,列印日誌。
然後通過getbean獲取indexservice執行getuserservice()方法,該方法呼叫了userservice,並呼叫其getindexservice()方法,這個方法反過來又呼叫了indexservice。輸出日誌正確,所以它們是迴圈依賴的。
spring 迴圈依賴
構造器依賴無法解決,使用 快取解決field屬性依賴。a的屬性依賴b,b的屬性依賴a 建立a,設定依賴屬性b,發現b沒有建立,建立b,設定依賴屬性a,先從一級快取singletonobjects中去獲取。如果獲取到就直接return 如果獲取不到或者物件正在建立中 issingletoncurren...
spring迴圈依賴
關於spring迴圈依賴網上有太多的例子,本文只是簡單的記錄一下。本文預設讀者熟悉spring核心之一控制反轉和依賴注入 在我們的開發過程中,我們基本上對迴圈依賴是無感且不用去考慮如何解決。如上圖中classa使用屬性注入了classb,classb使用屬性注入了classa。如上圖這就是產生了迴圈...
Spring 中的迴圈依賴
a 例項依賴 b 例項,b 例項依賴 c 例項,c 例項依賴 a 例項,依賴關係形成乙個環,就稱為迴圈依賴。prototype 作用域的迴圈依賴 迴圈依賴是對於單例來說的,spring 容器對於 prototype 作用域的 bean 不進行快取,因此無法完成依賴注入。構造器迴圈依賴 單例 始終都在...