的形式加入singletonFactories(三级缓存)提前暴露, 再准备填充属性
发现需要注入依赖B, 进行第3步
判断三级缓存中存不存在B
实例化B
执行与A一样的判断, 放入三级缓存暴露出来,...再准备填充属性
发现依赖A, 依次判断一/二/三级缓存, 最终从三级缓存中获取到A的ObjectFactory
调用ObjectFactory#getObject, 获取到对象A, 并将A从三级缓存移除...获取到二级缓存的对象, 调用addSingleton从二级缓存移除, A加入一级缓存
Spring怎么解决的循环依赖
将对象提前暴露在三级缓存中
假如移除掉二级缓存....那Spring为什么不使用两级缓存而使用三级, 可能是一二级缓存合并后, 职责会混乱. 一级缓存存储完成品Bean, 二级缓存则是半成品....= null) {
// 从三级缓存中拿到的工厂Bean获取到对象后, 从三级缓存中移除
singletonObject