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
posted @ 2022-05-24 14:40  SArtOnline  阅读(59)  评论(0编辑  收藏  举报