spring三级缓存核心思想

spring三级缓存的工作原理都见过很多了,但是为什么要这么做,这么做为什么就能解决循环依赖问题,还是很少有人能说清楚,笔者今天学习过后分享一点个人的想法。

一、bean创建过程中的中间状态可被引用

想象一下,如果一个bean只有彻底完成创建,才能被另一个bean注入和使用。那么对于A注入B,B注入A的循环依赖场景,是完全没有办法解决的。只有将一个未完成所有创建动作的bean作为被注入对象使用,才有可能跳出循环。

二、有一个bean先跳出循环

中间状态可被引用的前提下,初始化A时注入B,发现无法找到B,然后初始化B,此时B要注入A,则此时直接使用A的中间状态作为引用注入即可,然后B就可以完成创建。此时需要特别注意,这一步,B率先完成了初始化,这便实现了跳出依赖循环的效果。后续,顺利成章地,A此时便能注入B完成自己的创建。

所谓三级循环,只是基于这种思想的实现机制,不必死记硬背回。过头去看,三级缓存用来存放工厂方法,方便当你需要时获取其中间状态单例,二级缓存用来存放中间状态的单例,一级缓存用来存放最终使用的单例池。这几个单例池都是实现上述思想和过程的工具而已,基于这种思想,可以解决许多相似问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值