Spring中的循环依赖问题

链接1
链接2

大致的流程就是:

1.AB 中属性相互引用,造成循环依赖
2. A 实例化完成,将自己提前曝光到 singletonFactories 缓存中(这里是三级缓存)
3. A 实例进行依赖注入,发现自己依赖对象 B,就尝试获取 B 实例引用
4. B 此时还没初始化,先进行实例化并将自己曝光到 singletonFactories 缓存中(这里也是三级缓存)
5. B 实例进行依赖注入,发现自己依赖对象 A,就尝试获取 A 实例引用
6. 由于 A 实例尚未初始化完成,从 singletonObjects 中获取不到,从 earlySingletonObjects 中获取也没有,最后从 singletonFactories 中获取到(从一级缓存开始找,没有,二级缓存,也没有,去三级缓存,有了)
7. A 实例从 singletonFactories 中删除,添加到 earlySingletonObjects 缓存中去(找到后从三级缓存拿走,放到二级缓存中)
8. B 实例拿到 A 实例引用后顺利完成依赖注入及初始化,并将自己从 singletonFactories 缓存中删除,添加到 singletonObjects 缓存中(实例化好并且依赖注入好,放到一级缓存中)
9. A 实例获取 B 实例引用后,A 实例也能继续完成依赖注入及后续初始化操作
10. A 是从 earlySingletonObjects 中删除,添加到 singletonObjects 缓存中(从二级缓存中删除,放到一级缓存中)

看一下相关面试题:
面试题链接(好难)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值