「 SPRING 」 一月 28, 2020
文章字数 7.9k 阅读约需 7 mins.
循环依赖就是循环引用,就是两个或者多个 bean 相互之间的持有对方,最后形成一个环。例如 A 引用了 B,B 引用了 C,C 引用了 A。
原型(Prototype)的场景是不支持循环依赖的,通常会走到AbstractBeanFactory类中下面的判断,抛出异常。通过构造器注入的循环依赖,也是无法解决的。
对于 setter 注入造成的依赖可以通过 Spring 容器提前暴露刚完成构造器注入但未完成其他步骤(如 setter 注入)的 bean 来完成。
Spring 创建Bean的过程,大致和对象的初始化有点类似吧。有几个关键的步骤