SpringBean的循环依赖源码分析
2021-12-10 08:56:06 0 举报
SpringBean的循环依赖源码分析
作者其他创作
大纲/内容
BService
什么是循环依赖?循环依赖就是循环引用,就是两个或多个bean相互之间的持有对方
spring无法解决,为什么无法解决?
1.因为prototype类型的bean,spring不进行缓存!2.spring只对signleton类型的bean进行缓存!3.每一次创建都会实例化一个新的对象,因此每一次循环引用都是一个新的java引用,无法关联到之前的引用对象!
3.prototype范围的循环依赖
spring无法解决!遇到会抛出\"BeanCurrentlyInCreationException\"异常
@Autowiredprivate BService bService
重要源码分析详见文档:processOn真坑,上传不了word无奈只好上传WPS了,日后更新到个人博客!https://kdocs.cn/l/ceYTlVvMc9Dg[金山文档] spring循环依赖源码分析.docx
源码分析
初始化Bean
2.setter循环依赖
spring种循环依赖的三种情况
AService
@Autowiredprivate Service aService
spring基于signleton类型的bean循环依赖的源码分析
依赖
spring利用三级缓存解决循环依赖问题
1.构造器循环依赖
1.初始化AService,2.调用getBean(name):3.调用doGetBean()方法:4.从缓存中查找对象:Object sharedInstance = getSingleton(beanName):若存在,返回对象。如果未在三级缓存中查找到对象,说明为第一次调用getBean方法,还没有创建过5.创建bean 判断对象是否为单例(此处是重点)span style=\"font-size: inherit;\
0 条评论
回复 删除
下一页