什么是循环依赖?

有两个类,一个是A、一个是B。并且A和B互相引用了对象

A class

java
1
2
3
4
5
6
public class A {
@Autowired
B b;
String name;
int age;
}

B class

java
1
2
3
4
5
6
7
public class B {
@Autowired
A a;
String name;
int age;

}

Spring解决循环依赖步骤

image-20230916180832109

1、创建A

image-20230916183444979

2、将lambda放入三级缓存中

image-20230916193029748

3、填充属性

image-20230916193130349

4、缓存中找

image-20230916193250589

image-20230916193411487

image-20230916193430018

image-20230916193453947

image-20230916193528013

5、没找到

6、创建B

image-20230916193609254

7、将lambda放入三级缓存中

image-20230916194931844

8、填充属性

image-20230916194942005

9、缓存中找A

再次去doGetBean,从三级缓存中拿

image-20230916195209262

10、找到了填充到B

image-20230916195310490

11、将B填充到一级缓存中

image-20230916195402917

12、将一级缓冲中B填充到A

image-20230916195516302

13、初始化A

image-20230916195904458

14、将A放入到一级缓存中

image-20230916195610648