循环依赖是指两个或者多个bean之间相互引用,形成了一个闭环。
最典型的场景就是:
比如Spring正在创建Bean A,发现它依赖B,于是就去创建B,结果在创建B的时候,又发现它依赖A。
但是这个时候A正在创建中,还没有完全生成,这样B就拿不到A的引用,所以该咋办呢?
这里又分为构造器注入 和Setter注入两种情况:
如果是构造器注入,那好办,Spring直接就给你抛出BeanCurrentlyInCreationException错误。
如果是Setter注入,Spring则是通过三级缓存机制来解决。