Spring 如何解决循环依赖问题
2021-07-28 01:08:41 0 举报
Spring 如何解决循环依赖问题 ,A 依赖 B , B 依赖 C , C 依赖 A
作者其他创作
大纲/内容
空
NULL
返回给A
return a
9.resolveValueIfNecessary(\"a\")发现依赖a
\"b\"
2.doGetBean(\"a\")
三级缓存singletonFactories
6.createBeanInstance(\"b\")
\"a\"
return null
一级缓存singletonObjects
1.getBean(\"b\")
get
返回给B
当前正在创建的 bean名称集合singletonsCurrentlyInCreation
12.addSingleton(\"a\")加入到一级缓存移除二级缓存移除三级缓存
5.createBean(\"b\")
1.getBean(\"a\")
11.initializeBean(\"a\")初始化
6.createBeanInstance(\"c\")
3.getSingleton
4.getSingleton(\"c\
10.initializeBean(\"c\")初始化
11.addSingleton(\"b\")加入到一级缓存移除二级缓存移除三级缓存
5.createBean(\"a\")
null
8.populateBean(\"a\")属性赋值
二级缓存earlySingletonObjects
7.addSingletonFactory(\"a\")加入三级缓存,提前曝光
9.resolveValueIfNecessary(\"c\")发现依赖C
\"c\"
8.populateBean(\"c\")属性赋值
7.addSingletonFactory(\"c\")加入三级缓存,提前曝光
11.addSingleton(\"c\")加入到一级缓存移除二级缓存移除三级缓存
3.getSingleton(\"a\
synchronized(singletonObjects)整个一级缓存加锁
3.getSingleton(\"b\
4.getSingleton(\"a\
10.initializeBean(\"b\")初始化
4.getSingleton(\"b\
3.getSingleton(\"c\
12.Return Bean b
getSingleton
移除三级缓存放入二级缓存
返回给 c
10.getSingleton(\"a\
13.Return Bean a
7.addSingletonFactory(\"b\")加入三级缓存,提前曝光
12.Return Bean c
9.resolveValueIfNecessary(\"b\")发现依赖B
8.populateBean(\"b\")属性赋值
6.createBeanInstance(\"a\")
1.getBean(\"c\")
5.createBean(\"c\")
2.doGetBean(\"b\")
2.doGetBean(\"c\")
收藏
0 条评论
下一页