Spring三级缓存原理

三级缓存逻辑

一级:终极Bean,成熟Bean
二级:未赋值的普通对象或代理类对象,避免多次创建
三级:lambda表达式,判断是否AOP然后生成未赋值的普通对象或代理对象

场景:
A {
B b;
}

B {
A a;
}

new A();
在这里插入图片描述

逻辑: 创建A,首先从一级缓存Map中去拿,发现拿不到,然后将A在 CreateingSet中存储,表示该Bean正在创建中,然后再把它存到三级缓存中,value是一个lambda表达式,通过lambda表达式可以判断该Bean是否AOP,然后拿到普通对象或代理对象,然后在二级缓存中也存一份,然后三级缓存中移除该lambda表达式然后进行赋值操作,赋值B,去一级缓存中查看是否有B,没有B,然后将B放到CreateingSet中,然后也存到三级缓存中,然后赋值,赋值的时候去Set中看,有,说明存在循环依赖,然后去二级缓存中找,找不到,然后再去三级缓存中找,找到后赋值。

lambda表达式:作用是判断该对象是否AOP,存储普通对象还是代理对象
二级缓存:作用在于,不会多次创建出普通对象或者代理对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavaSupeMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值