一、请解释下Spring的三级缓存
所谓Spring的三级缓存是Spring内部解决循环依赖的三个Map,即DefaultSingletonBeanRegistry中的三个Map。
二、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