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 |
本文来自博客园,作者:SArtOnline,转载请注明原文链接:https://www.cnblogs.com/sartonline/p/16305487.html