spring自動解決迴圈依賴
阿新 • • 發佈:2022-05-24
一、應用場景
- Spring自動解決迴圈依賴(構造依賴無法解決)
二、工作原理
根本原因:例項構造方法,因迴圈依賴而不能正常執行
根本解決:例項函式和依賴注入分離
三級快取:singletonObject、earlySingletonObject、singletonFatories
三、用例
無法解決:構造器直接注入依賴
@Component public class CircularDependencyA { private CircularDependencyB circB; @Autowired public CircularDependencyA(CircularDependencyB circB) { this.circB = circB; } }
@Component
public class CircularDependencyB {
private CircularDependencyA circA;
@Autowired
public CircularDependencyB(CircularDependencyA circA) {
this.circA = circA;
}
}
四、SWOT分析
S | W | O | T | |
---|---|---|---|---|
Setter解決迴圈依賴 | ||||
構造器引數加@lazy;惰性注入避免迴圈依賴編譯 | ||||
@PostContruct手動賦值;構造後直接往目標註入依賴 | ||||
介面ApplicationContextAware和InitializingBean手動賦值;同@PostContruct |