SpringBean循环依赖问题的解决过程
2023-03-30 15:16:08 6 举报
Spring中Bean的三级缓存的大体过程
作者其他创作
大纲/内容
此时A和B都在三级缓存中存储,从三级缓存中获取A对应的ObjectFactory的getObject方法,实质是调用在A创建对象后村遭到三级缓存的Lambda表达式,最终返回A的Bean实例(或A的Proxy),从三级缓存移除A,存储到二级缓存中,将半成品A的Bean返回,方法开始回溯
创建好Bean,尚未进行属性填充,所以是一个半成品,奖该Bean对应的ObjectFactory存储到三级缓存
B实例创建
this.doGetBean(beanName)
ClasspathXmlApplicationContext
finishBeanFactoryInitialzation(beanFactory)
refresh()
this.getBean(beanName)
开始被注入的Bean的创建过程
this.getSingleton(beanName)
对半成品Bean进行填充
A实例创建
B中注入A
程序入口
从一二三级缓存中去Object,获取到返回Bean实例,获取不到返回null
this.beanFactory.getBean(resolvedName)
创建出当前获取的Bean实例wrapper
A中注入B
preInstantiateSingletons()
0 条评论
回复 删除
下一页