Spring循环依赖
2023-12-26 09:22:11 22 举报
Spring循环依赖
作者其他创作
大纲/内容
去三级 缓存中获取参数
singletonsCurrentlyInCreation.add(beanName)
no
DefaultListableBeanFactory#doResolveDependency
当第三次进来的时候,会将三级缓存中的信息剪切到二级缓存之中,然后 doCreateBean 执行完成
不存在
addSingleton
End
AutowiredFieldElement#inject
此时候选人BService会先被放入一级缓存之中,AService停留在二级缓存,继续走后续流程
addSingletonFactory
AServic
针对依赖对象代理
AbstractAutowireCapableBeanFactory#initializeBean
创建候选人(BService)对象
singletonFactories != null
injectedElements > 0
getSingleton被重载过多次,记得留意
getSingleton
使用
singletonsCurrentlyInCreation.remove(beanName)
DependencyDescriptor#resolveCandidate
@Lazy
doCreateBean
存在
未使用
singletonObjects == null && isSingletonCurrentlyInCreation
earlySingletonObjects == null && allowEarlyReference
createBean
ContextAnnotationAutowireCandidateResolver#buildLazyResolutionProxy
ContextAnnotationAutowireCandidateResolver#getLazyResolutionProxyIfNecessary
BServic
AutowireCapableBeanFactory#resolveDependency
doGetBean
AutowiredAnnotationBeanPostProcessor#postProcessProperties
yes
AbstractAutowireCapableBeanFactory#populateBean
当前bean没注入内容的时候直接不执行后续流程
0 条评论
下一页