循环依赖解析
一、什么是循环依赖
循环依赖就是循环引用,两个或者多个bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则他们最终反映为一个环。
二、Spring是如何解决循环依赖
Spring容器循环依赖包括构造器循环依赖和setter循环依赖
1、构造器循环依赖
通过构造器注入形成的循环依赖,此依赖无法解决,只能抛出BeanCurrentlyInCreationException异常表示循环依赖。
Spring容器将每一个正在创建的bean标识符放在一个“当前创建bean池”中,bean标识符在创建过程中一直保持在这个池子中,因此如果在创建bean过程中发现自己已经在“当前创建bean池”里时。将抛出BeanCurrentlyInCreationException异常表示循环依赖。而对于创建完毕的bean将从“当前创建bean池”中清除掉。
public class CircleA {private CircleB circleB;public CircleA(CircleB circleB) {this.circleB = circleB;}public void a(){circleB.b();;}public CircleB getCircleB() {return circleB;}public void setCircleB(CircleB circleB) {this.circleB = circleB;} }public class CircleB {private CircleC circleC;public CircleB(CircleC circleC) {
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
