spring bean在三级缓存中的转移
2022-01-19 16:36:16 13 举报
spring bean在三级缓存中的转移
作者其他创作
大纲/内容
从三级缓存中取出放到二级缓存中(A)
放到三级缓存中(A)
实例化(B)
从三级缓存中获取,发现需要生成代理,生成代理对象后将代理对象放到二级缓存中(A)
实例化(A)
放到一级缓存中(A)
AB循环依赖并且A需要代理的情况
将B注入到A中(不是A的代理对象)
放到一级缓存中(B)
getBean(A)
依赖注入B
getBean(B)
返回bean(A)
返回bean(B)
AB循环依赖的情况
依赖注入C
将A的代理对象注入到B中
封装成ObjectFactory对象放到三级缓存中(A)
依赖注入A
没有循环依赖的情况
1、生成A半成品,放入到第三级缓存2、A填充属性注入B -》 创建B半成品,加入第三级缓存3、B填充属性注入A -》 创建A代理对象,从第三级缓存移除A对象,A代理对象加入第二级缓存 -》 B注入A代理对象4、创建B代理对象(此时B是完成品) -》 从第三级缓存移除B对象,B代理对象加入到第一级缓存5、A半成品注入B代理对象6、从第二级缓存中移除A代理对象,A代理对象加入第一级缓存7、此时只有第一级缓存中又A和B的代理对象,第二级和第三级缓存没有对象
返回代理对象(A)
放到三级缓存中(B)
A和B循环依赖,并且都有代理的情况
封装成ObjectFactory对象放到三级缓存中(B)
0 条评论
下一页