spring循环依赖和三级缓存
三级缓存里面的内容
- 一级缓存,保存的依赖完成的对象
- 二级缓存,保持的依赖不完整的对象
- 三级缓存,保持的对象工厂
循环依赖对象是怎么放入三级缓存中的
-
加载A
- 在三级缓存中加入
ObjectFactory<A>
- 发现需要依赖B,然后开始加载B
- 在三级缓存中加入
-
加载B
- 在三级缓存中加入
ObjectFactory<B>
- 发现需要依赖A,在一级缓存中没有,二级缓存中没有,三级缓存中有
- 在三级缓存中加入
-
处理B的依赖A
- 发现B需要注入A,此时:
ObjectFactory<A>
并调用getObject()
:得到半成品的A,放入二级缓存中- 将半成品的A放入二级缓存,并从三级缓存中移除
ObjectFactory<A>
。
-
完成B的初始化
- 将A的引用给B,B完成初始化,将完全初始化的B放入一级缓存
-
完成A的初始化
- 将B的引用给A,A完成初始化,将完全初始化的A放入一级缓存
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2025-10-15 16:23 zhangyukun 阅读(3) 评论(0) 收藏 举报