一、构造方法注入属性会报异常
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方法注入属性不会报异常