Spring bean的迴圈依賴問題

2022-03-16 21:48:45 字數 555 閱讀 4725

【傳送門】:通過迴圈依賴問題徹底理解 spring ioc 的精華

迴圈依賴其實就是迴圈引用,也就是兩個或則兩個以上的bean互相持有對方,最終形成閉環。比如a依賴於b,b依賴於c,c又依賴於a。

spring 中的迴圈依賴有構造器迴圈依賴和setter迴圈依賴。

spring容器會將當前正在建立的bean快取,如果在bean建立的過程中發現自己在這個快取,則初始化失敗

singletonfactories:例項化階段的單例物件的cache

earlysingletonobjects: 一例項化為完成初始化的單例物件cache

singletonobjects: 完成初始化的單例物件cache

預設的bean為singleton,建立未完成和完成的都會進行快取,setter方式注入時,如果物件沒有建立完成,則可以先將例項化未初始化的bean(singletonfactories中的快取的物件)進行注入,而且注入的是乙個引用,後面這個bean例項化完即可

prototype型別的beanspring不會快取,此時注入時必須要乙個完成的bean,不能注入建立未完成的bean

Spring Bean 迴圈依賴解決方案

由於service層互相呼叫,一下子沒有什麼好的拆分方案,所以先解決迴圈依賴問題。現有aservice 和bservice,都在對方bean中注入,導致初始化時迴圈初始報錯,解決方案就是選擇其一使其延遲載入。用配置方式只要將其一設定lazy init,具體沒嘗試過因為不適用配置申明的方式。然後從上下...

spring Bean的生命週期和迴圈依賴

a類引用了b,b類引用了a,像這種迴圈著依賴就是迴圈依賴 對於這種配置不會報錯 對於這種配置會報錯 error creating bean with name instancea requested bean is currently in creation is there an unresolv...

Spring bean 繼承與依賴

spring 允許繼承 bean 的配置,被繼承的 bean 稱為父 bean.繼承這個父 bean 的 bean 稱為子 bean 子 bean 從父 bean 中繼承配置,包括 bean 的屬性配置 子 bean 也可以覆蓋從父 bean 繼承過來的配置 父 bean 可以作為配置模板,也可以作...