您现在的位置是:网站首页> 内容页

Spring 中的循环依赖

  • 尊博下载
  • 2019-11-05
  • 302人已阅读
简介A实例依赖B实例,B实例依赖C实例,C实例依赖A实例,依赖关系形成一个环,就称为循环依赖。protoType作用域的循环依赖:循环依赖是对于单例来说的,spring

A 实例依赖 B 实例,B 实例依赖 C 实例,C 实例依赖 A 实例,依赖关系形成一个环,就称为循环依赖。

protoType 作用域的循环依赖:循环依赖是对于单例来说的,spring 容器对于 protoType 作用域的 bean 不进行缓存,因此无法完成依赖注入。

构造器循环依赖(单例):始终都在等待依赖创建成功,陷于死循环,无法解决。

setter 循环依赖(单例):在 bean 实例创建成功还未进行注入时,创建一个可以得到这个 bean 的 ObjectFatory,并将这个 ObjectFatory 加入缓存。解决循环依赖如下图:


<bean id="a" /> <bean id="b" ><property name="aref" ref="a" /></bean><bean id="sysinit" > <bean id="manager" depends-on="sysinit"/>

XML 中的 ref 关系指的就是上文提到的依赖关系,依赖的 bean 是当前 bean 的属性。

但有时候依赖关系并不会这么明显,但又确实存在,这时可以使用 depend-on。depend-on 依赖不允许形成闭环。

文章评论

Top