(四)循环依赖(待补)

一、构造方法注入属性会报异常

Spring容器会将每一个正在创建的Bean标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池子中。因此若在创建Bean过程中,发现自己已经在“当前创建Bean池”里将抛出异常BeanCurrentInCreationException

public class A
{
   private B b;
   public A(B b)
   {
    this.b=b;
   }
   
}

public class B
{
   private A a;
   public B(A a)
   {
    this.a=a;
   }
   
}

A有参构造是B,B有参构造时A,这样就产生了循环依赖的情况。

Spring容器先创建A,A依赖B,则将A放在"当前创建Bean池"中,此时创建B,B依赖A,发现A已经在“当前创建Bean池”里面,所以会报错,因为池中的Bean都是未初始化完的,所以会依赖错误(初始化完的Bean会从池中移除)

二、set方法注入属性不会报异常

https://www.zhihu.com/question/39814046 卫婷 待补

posted @ 2019-03-26 16:07  测试开发分享站  阅读(109)  评论(0编辑  收藏  举报