Spring依賴迴圈問題解析

2021-09-05 09:22:41 字數 823 閱讀 8654

spring容器能夠順利例項化以建構函式方式注入方式配置的bean有乙個前提:

bean建構函式入參引用的物件必須已經準備就緒。由於這個機制的限制,如果兩個bean都採用建構函式注入,而且都通過建構函式入參引用對方,就會發生類似於執行緒死鎖的迴圈問題。

public class

car}

public class

boss

}

假設在spring配置檔案中按照一下進行配置

"car"

class

="com.smart.cons.car"

>

<

!-- 通過構造方法設定屬性值 --

>

"0" value=「紅旗」 />

"1" ref=「boss」 />

<

/bean>

"boss"

class

="com.smart.cons.boss"

>

"0" value=「john」 />

"1" ref=「car」 />

<

/bean>

當啟動spring ioc容器時,因為存在迴圈依賴問題。spring容器將無法啟動。解決這個問題只需要修改bean**,將建構函式輸入方式調整為屬性注入方式。

不要使用基於建構函式的依賴注入,可以通過以下方式解決:

1.在字段上使用@autowired註解,讓spring決定在合適的時機注入

2.用基於setter方法的依賴注入。

Spring 迴圈依賴問題

a class com.demo.circularreference.a name b ref b bean b class com.demo.circularreference.b name a ref a bean public classa public class b spring中將迴圈依...

spring迴圈依賴問題

在開始介紹各種情況之前,首先要了解以下三個知識點 spring中依賴注入的方式有兩種,屬性注入與構造器注入。上面的 中,類a就是通過屬性注入的方式注入了b,類b是通過構造器注入的方式注入了a。spring中的bean根據作用域的不同,可以大體分為兩類,singleton和prototype。sing...

Spring迴圈依賴問題(筆記)

a類中有成員變數b類的物件。b類中也有成員變數a類的物件。簡單來說就,就是如下情況 class a class b 在一開始的開始 也就是程式第一次獲取a的例項時,需要從spring容器單例池中獲取。但此時單例池中還沒有a的例項,所以要new 乙個a物件。在a例項 建立和初始化的時候,要獲取成員變數...