循环依赖
2021-12-30 21:41:09 7 举报
A依赖B,B依赖A,Bean加载流程
作者其他创作
大纲/内容
将A放入一级缓存
属性注入(populateBean)另外一个依赖Bservice
封装成BeanWrapper(为了传参更方便)
先从一级缓存拿,再从二级,最后在三级缓存中拿到AService
getBean(A)--getSingleton
加载非延时加载的所有Bean,doLoadInstance
标记A这个Bean正在创建中singletonCurrentlyInCreation
加载配置文件(BeanDefinitionReader)
解析配置文件,封装BeanDefinition
getSingleton(A)
属性注入(populateBean)假设依赖AService
getBean(A)
反射实例化对象instantiateBean
遍历DefaultListableBeanFacttory中的BeanDefinition信息,循环调用getBean()方法
将B放入一级缓存
封装成BeanWrapper
放入三级缓存
getSingleton(A)
清除A的创建标记
清除B的创建标记
getBean(B)
标记B这个Bean正在创建中singletonCurrentlyInCreation
getSingleton(B)
缓存BeanDefinition信息到DefaultListableBeanFacttory
0 条评论
下一页