初始化一个Bean的时候,先调用Bean的构造方法,这个对象就已经在内存中存在了(对象里的依赖还没被注入),把这个对象保存下来,当循环依赖产生时,直接拿到之前保存的对象,这样循环依赖就被终止了,依赖注入也就完成了。

例:

对象A中有属性是对象B,对象B中也有对象A,这样就产生了循环依赖。

1.创建对象A,调用A的构造方法,将A保存下来。

2.注入对象A中的属性,发现依赖于B,于是创建对象B。

3.调用B的构造方法,并把B保存下来。

4.然后准备注入B中的依赖,发现依赖于A,但A之前已经创建了,于是直接将A注入B中,于是B创建成功。

5.把创建的B注入给A,于是A也创建成功。