spring循环依赖源码解析
2021-04-22 22:50:23 0 举报
详细清晰的spring循环依赖的源码解析
作者其他创作
大纲/内容
调用三级缓存中的a的创建方法
获取bean的基本四个步骤
从三级缓存中获取B的工厂方法创建B
getSingleton:获取单例bean
B创建过程中发现需要A填充
填充属性B
populateBean属性填充发现依赖B
发现在三级缓存中有a
三级缓存中的a也是半成品
把A加入二级缓存,从三级缓存中移除
创建A
前置知识
从二级缓存中获取到A,填充到B
populateBean 属性填充
继续创建A
创建B
doCreateBean:创建单例bean
从一级缓存中获取B,填充打A
创建依赖的属性B
工厂方法创建A
B创建好了,从三级缓存移除,加入一级缓存
addSingleton:加入缓存
加入三级缓存
结束
a创建好了,从二级缓存移除,然后加入一级缓存
spring的三级缓存解释:1:完成spring的生命周期的Bean对象2:存放已经实例化但是没有完成初始化的对象3:三级缓存放生产bean对象的工厂
填充属性A
populateBean属性填充发现依赖A
0 条评论
下一页