1. 程式人生 > 其它 >spring自動解決迴圈依賴

spring自動解決迴圈依賴

一、應用場景

  • 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