1.A 创建过程中需要 B,于是A 将自己放到三级缓里面,去实例化 B
2.B实例化的时候发现需要A,于是B先查一级缓存,没有,再查二级缓存,还是没有,再查三级缓存,找到了A然后把三级缓存里面的这个 A 放到二级缓存里面,并删除三级缓存里面的 A
3.B 顺利初始化完毕,将自己放到一级缓存里面(此时B里面的A依然是创建中状态)
然后回来接着创建A,此时B已经创建结束,直接从一级缓存里面拿到B,然后完成创建,并将A自己放到一级缓存里面。
spring框架循环依赖的思路
本文详细阐述了一种对象实例化过程中涉及到的三级缓存机制。在A创建时需要B,A先放入三级缓存,B实例化时发现需要A,从三级缓存获取并移至二级缓存。B完成初始化后,A继续创建,从一级缓存得到B,最终A和B都存入一级缓存。
摘要由CSDN通过智能技术生成