1、什么是 Bean 的循環依賴
在 Spring框架中,Bean 的循環依賴是指多個 Bean 之間?互相持有對方引用?,形成閉環依賴關系的現象。
多個 Bean 的依賴關系構成環形鏈路,例如:
- 雙向依賴:Bean A 依賴 Bean B,同時 Bean B 也依賴 Bean A(A?B)。
- 鏈條循環: Bean A → Bean B → Bean C → Bean A(三對象及以上形成的閉環)。
- 自我依賴:Bean A 依賴自身(A→A)。
典型示例代碼片段:
@Component
public class BeanA
{@Autowiredprivate BeanB beanB;
}@Component
public class BeanB
{@Autowiredprivate BeanA beanA;
}
2、如何解決 Bean 的循環依賴
Spring 通過三級緩存機制解決單例 Bean 的循環依賴問題,具體流程和限制如下:
2.1 三級緩存機制
三級緩存機制在 Spring 源碼中由 ?DefaultSingletonBeanRegistry 類?實現,該類定義了三個核心 Map 字段分別對應三級緩存。
視頻教程: