Spring解决循环依赖的三级缓存流程图

 1. 我们创建AService对象,将其对应的Lambda表达式放入三级缓存,lambda表达式的作用是,判断我们的这个实例化对象是否有AOP的操作,如果有就执行AOP,返回代理后的对象放到二级缓存,如果没有,则直接将原对象放入二级缓存。
2. 然后我们队AService这个实例化对象进行属性注入,填充BService,首先是去一级缓存中去找,没有找到则去创建BService对象。
3.创建BService步骤同样是讲BService对应的lambda 表达式放入我们的三级缓存中,发现B同样需要注入AService属性。 
4.找AService首先会去一级缓存和二级缓存中找AService,发现不存在,那么就去三级缓存当中查找。  
5.找到了,那么此时执行三级缓存中AService对应的lambda表达式创建AService对象,将返回对象放入二级缓存当中, 
6.此时我们的BService中有了AService,但是AService中的BService属性尚未注入,对其进行属性注入。
7. 执行三级缓存中的BService对应的lambda表达式,得到BService对象,并将BService对象由二级缓存移入到一级缓存。
8. 此时BService结束。
9.继续对AService进行属性注入,将一级缓存中的BService填充到AService,接下来就是初始化AService。
10. AService初始化完毕,将AService移入到一级缓存。
11. 此时AService结束
12. 循环依赖注入的问题就这样解决了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值