写在前面的话
正逢立冬,北风潜入悄无声,未品浓秋已立冬。
寒潮来袭,气温骤降,当下室外温度为7°,成都这一轮的新冠也扰人不得安宁,致敬在抗疫一线工作的英雄们。
什么是循环依赖?
循环依赖就是循环引用,就是两个或者多个bean相互之间的持有对方,
比如A引用B,B引用C,而C又引用A,这样它们就最终反映为一个环。
注意这里不是循环调用,循环调用是方法之间的环调用,
循环调用是无法解决的,除非有终结条件,否则就是死循环,最终会导致内存溢出错误。
spring如何解决依赖循环
先说分类,spring的循环依赖分为:构造器循环依赖和setter循环依赖。
结论是:构造器循环依赖没有办法解决,spring会直接抛错。
setter中的bean循环依赖解决必须使单例模式的,否则也是无法解决的
下面详细说一下各种的特点和具体表现
1.构造器循环依赖
表示通过构造器注入构成的循环依赖,无法解决,抛出BeanCurrentlyInCreationException异常来表示发生了循环依赖。
<bean id="A" class="com.bean.A">
<constructor-arg indes="0" ref="B"/>
</bean>