初始化一个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也创建成功。