AB都有代理
2021-11-12 15:14:30 2 举报
spring循环依赖
作者其他创作
大纲/内容
b=null
createBean()
先去一、二、三级缓存拿getSingleton(beanName)
beforeSingletonCreation标记正在创建
return 代理A注入到B
populateBean
getSingleton先去一、二、三级缓存拿
二级缓存取出代理A和原生A进行偷天换日
beforeSingletonCreation(beanName);标记正在创建
getBean(A)
代理b注入A
实例化
后置通知生成代理B
createBean
放入earlyProxyReferences
AB依赖都有代理
代理a放入一级缓存,清除(实际B注入A时已经删除三级缓存)二级三级缓存
三级缓存ObjectFactory取到代理A放到二级缓存,并且删除三级缓存工厂
initializeBean初始化B
后置通知发现已经生成过代理A,返回了原生A
getBean(B)
匿名内部类singletonFactory.getObject();addSingleton把代理b放入一级缓存并且删除二级(实际二级缓存没放过),三级(工厂)缓存
删除正在创建标记
initializeBean
a=null
收藏
收藏
0 条评论
下一页