spring如何解决循环依赖

什么是循环依赖

看这两个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;

上一篇:Spring MVC文件上传


下一篇:C++第16周项目4 -处理C++源代码 - (2)花括号单独占一行