Spring解决循环依赖
2020-03-11 11:42:42 134 举报
Spring解决循环依赖问题
作者其他创作
大纲/内容
BeanA创建过程
doGetBean(beanA)
BeanA获取为null
BeanA原始对象:BeanA@1234
doGetBean(beanB)
getSingleton(beanB)
解析BeanB的依赖,实例化BeanA
BeanB创建过程
getSingleton(beanA)
earlySingletonObjects
getBean(beanA)
Spring解决循环依赖过程
createBeanInstance(beanA)
创建原始BeanA对象,属性没赋值BeanA@1234
BeanB实例化完成
三级缓存
......过程同A
后续处理
整体流程如下:1、创建BeanA原始对象BeanA:BeanA@1234,此时属性未赋值2、暴露早期引用,将原始对象BeanA放入singletonFactories缓存3、解析依赖BeanB4、BeanB在实例化BeanA的时候,从缓存中获取BeanA的早期引用,BeanB实例化完成5、BeanA实例化完成
singletonFactories
解析BeanA的依赖,实例化BeanB
singletonObjects
将BeanA:BeanA@1234放入singletonFactories
获取BeanA的原始对象
getBean(beanB)
0 条评论
下一页