系列二十、循环依赖(二)

一、请解释下Spring的三级缓存

        所谓Spring的三级缓存是Spring内部解决循环依赖的三个Map,即DefaultSingletonBeanRegistry中的三个Map。

系列二十、循环依赖(二)_第1张图片

二、A、B两对象在三级缓存中的迁移过程

第一步:A创建过程中需要B,于是A将自己放到三级缓存里面,去实例化B;

第二步:B实例化的时候发现需要A,于是B先查找一级缓存,没有,再查二级缓存,还是没有,再查三级缓存,于是找到A,然后把三级缓存里面的这个A放到二级缓存里面,并删除三级缓存里面的A;

第三步:B顺利完成初始化,并将自己放到一级缓存里面(注意:此时B里面的A依然是创建中的状态),然后接着回来创建A,此时B已经创建结束,直接从一级缓存里面拿到B,然后完成创建,并将A自己放到一级缓存里面。

三、断点顺序

# 参考B站尚硅谷周阳老师录制的视频,链接地址如下

https://www.bilibili.com/video/BV1Hy4y1B78T?p=39&spm_id_from=pageDriver&vd_source=72ebc194dbfa51ec950a52c25c337f7c

系列二十、循环依赖(二)_第2张图片

四、总结

系列二十、循环依赖(二)_第3张图片

系列二十、循环依赖(二)_第4张图片

系列二十、循环依赖(二)_第5张图片

系列二十、循环依赖(二)_第6张图片

你可能感兴趣的:(Spring全家桶面试系列,java,spring,开发语言)