老规矩,先上镇楼图
循环依赖
问题导入
A类,B类本来互相依赖,本来是没问题的:比如下面这种:
A a = new A();
B b = new B();
a.b = b;
b.a = a;
这样子,A,B就依赖上了。
但是如果这种依赖放在在Spring中就存在大问题,为什么?
是因为,在Spring中,一个对象并不是简单 new 出来就行,而是要要经过一系列 Bean 的生命周期,其中 Bean 的生命周期这会导致 循环依赖 问题,当然,出现问题的场景很多要分类,有的场景 Spring 可以帮我们解决,但是有的不能解决,后面仔细说。
如何解决?
解决办法:
三级缓存,其实就是三个Map,第一个就是单例池,后面有介绍:
那为什么要这样做?
先看Bean的生命周期
1 实例化
我们目的:得到一个对象;如上面AService)=new Aervice(); 对象中的属性如 BService 是没有值哦;
2 填充属性=自动注入(bService属性)
怎么填充?
首先要有对象来填充才行,是吧?