spring-ioc循环依赖(A依赖B,B依赖A)
2019-07-23 10:50:44 2 举报
spring ioc 循环依赖
作者其他创作
大纲/内容
从singletonObjects中获取实例A
没有获取到
从二级缓存earlySingletonObjects中获取A实例
将B放入一级缓存singletonObjects并且删除二、三级缓存
没有被创建中
开始创建A实例
创建提前暴露的B实例
二级缓存没有
标记A为正在创建中
三级缓存有
将提前暴露的实例A设置到实例B中的属性中
检查A是否被创建中(singletonsCurrentlyInCreation)
清除A正在创建的标记singletonsCurrentlyInCreation
标记B为正在创建中
设置B实例的属性
将A实例放入三级缓存singletonFactories
设置A实例的属性
从三级缓存singletonFactries获取A实例
初始化A实例
发现A中依赖B
将A放入一级缓存singletonObjects并且删除二、三级缓存
清除B正在创建的标记singletonsCurrentlyInCreation
发现A实例正在创建
开始创建B实例
把A实例放入二级缓存earlySingletonObjects,并且删除三级缓存singletonFactories
实例创建结束
检查B是否被创建中(singletonsCurrentlyInCreation)
创建提前暴露的A实例
发现B中依赖A
从singletonObjects中获取实例B
将B实例放入三级缓存singletonFactories
完整的实例B
初始化B实例
0 条评论
下一页