spring如何解决循环依赖

Spring通过三级缓存和提前暴露的方式来解决了循环依赖这个问题,举个例,A对象和B对象互相依

赖,Spring解决循环依赖过程如下:

1.通过反射实例化创建A对象并把A对象的工厂对象放入三级缓存;

2.按照Bean对象生命周期,下一步进行属性注入,A对象依赖B对象,B对象实例化并把B对象的工厂对象放入三级缓存;

3.B对象属性注入又依赖A对象,但是三级缓存中已存在A对象的工厂对象,通过工厂生产代理对象返回并放入二级缓存后删除三级缓存工厂对象;

4.B对象拿到返回的A代理对象就可以直接完成装配,放入一级缓存并删除三级缓存B对象工厂;

5.B对象完成实例化并返回,就可以把二级缓存中A对象同步到一级缓存销毁二级缓存对象解决循环依赖。

------ 本文结束感谢您的阅读 ------
请我一杯咖啡吧!
itingyu 微信打赏 微信打赏