什么是循环依赖
看这两个demo
public class A{ private B b; } public class B{ private A a; }
当你new了一个A
spring在实例化A的时候发现依赖B
这时候spring就会先去实例化B
然后又发现B依赖了A
spring又去实例化A
。。。。。。
由此导致无限循环
如何解决
首先搞懂一个概念,解决循环依赖并不是靠我们,spring会帮我们解决
但是!!!记住一点,很重要
spring只能通过提前暴露bean来解决setter注入的循环依赖,构造器注入的循环依赖无法解决(Spring实例化一个bean的时候,是分两步进行的,首先实例化目标bean,然后为其注入属性。)
不过话说回来,如果出现循环依赖,一般都是设计上的问题,但凡正经点的项目都不会出现这种问题,如果出现了,不用方,我们能做的就是把构造器创建bean改成setter,剩下的交给spring;