循环依赖
2021-04-13 16:49:32 0 举报
spring循环依赖
作者其他创作
大纲/内容
getBean(A)
结束
获取A代理对象的工厂
循环依赖
通过A对象创建一个工厂,并放入三级缓存
从缓存中获取到A的代理对象
A对象
完成注入
实例化B
属性注入,调用getBean(B)
singletonFactory.getObject()
instantiateBean(实例化)
Object sharedInstance = getSingleton(beanName);
初始化构造器,并且执行构造方法autowireConstructor
属性注入,调用getBean(A),完成注入
创建A
三级缓存
对A对象进行初始化
清除二级缓存,将初始化的Bean放入一级缓存
创建B
addSingletonFactory(加入三级缓存)
AbstractAutowireCapableBeanFactory中调用createBean()方法
AbstractBeanFactory.doGetBean()
populateBean
初始化
实例化A
调用createBean()
AbstractAutowireCapableBeanFactory中调用createBeanInstance()方法
从三级缓存中获取到A对应的工厂,通过工厂获取到A的代理对象,再将代理对象放入到二级缓存中,同时移除三级缓存中的工厂
0 条评论
回复 删除
下一页