怎么解决Spring循环依赖问题

48 阅读1分钟

可以通过三级缓存解决:

一级缓存:单例池,存储已经初始化好的Bean对象

二级缓存:缓存尚未完成生命周期的早期Bean对象

三级缓存:缓存ObjectFactory,用于创建Bean对象

解决循环依赖的流程:

1.实例化A对象,并创建ObjectFactory存入三级缓存。

2.在A初始化时需要B对象,开始B的创建逻辑

3.B实例化完成,也创建ObjectFactory存入三级缓存。

4.B需要注入A,通过三级缓存获取ObjectFactory生成A对象,存入二级缓存。

5.B通过二级缓存获取A对象后,B创建成功,存入一级缓存。

6.A对象初始化时,由于B已创建完成,可以直接注入B,A创建成功存入一级缓存。

7.清楚二级缓存中的临时对象A。