Spring三级缓存源代码执行流程图
2020-12-10 12:48:15 484 举报
Spring循环依赖、三级缓存,小总结,来自阳哥
作者其他创作
大纲/内容
initializeBean(beanA....)
populateBean(beanA....)
beanB 完成初始化和实例化
getSingleton(beanA,singletonFactory)
getSingleton(beanA) == Null
addSingletonFactory(beanB,singletonFacotry)
populateBean(beanB....)
doCreateBean(beanA.....);
doGetBean(beanA....)
初始化bean
先创建 beanA
属性注入
由于第一步添加了缓存所以这里不为空,并将三级缓存移动到二级
添加到三级缓存
createBeanInstance(beanB....)
getObjectForBeanInstance(.....)
getBean(beanA....)
创建bean对象
doGetBean(bean A....)
返回 beanA 的原始对象
getBean(beanA)
createBean(beanA,mdb,args)
addSingleton(beanA,singletonFactory)
最后完成beanA的初始化
getSingleton(beanA)
beanB 获取 beanA的早期引用
addSingletonFactory(beanA,singletonFacotry)
initializeBean(beanB....)
addSingleton(beanB,singletonFactory)
尝试从各级缓存中获取bean
0 条评论
回复 删除
下一页