Spring 使用 三级缓存 来解决循环依赖问题,原理如下:
1️⃣ 三级缓存 就是分成三步保存对象:
- 一级缓存:存储已经完全准备好的对象(就像已经做好的菜)。
- 二级缓存:存储正在做的一半完成的对象(半成品)。
- 三级缓存:存储用来制造半成品的工具或方法(可以随时做半成品)。
2️⃣ 解决方式: 当两个对象互相依赖时,Spring 会先把它们放到 三级缓存 中,这样它们就可以先用“半成品”凑合着工作,而不会一直等待对方的完成。
3️⃣ 最后完成: 等到所有对象都准备好了,Spring 就会把它们放到 一级缓存 中,这样它们就可以完全使用了。
简单说,Spring 用“先用半成品”的方法巧妙打破了循环依赖。