Python 官方文档:入门教程 => 点击学习
前言 spring是如何处理循环依赖的,又是怎么做到,互相注入对方的proxy bean而不是raw bean的?现在就分析一下 一、循环依赖是什么 Spring中放入两个Servi
spring是如何处理循环依赖的,又是怎么做到,互相注入对方的proxy bean而不是raw bean的?现在就分析一下
Spring中放入两个Service,分别是C1和C2,然后C1和C2又互为对方的成员变量。这种情况C1和C2就可以说是相互循环依赖了
上图是一个没有循坏依赖的bean的主要生命周期节点,下图的循坏依赖可以结合该图解一起看
可以看到里面有一个很重要的逻辑:
当一个bean经过所有的步骤之后,会去三个缓存里的二级缓存根据beanName获取对象。
可以看到此处第二个参数allEarlyReference,这个参数就是用来区分从3个缓存里取bean的时候是否需要到3级缓存里取对象,此处为false,所以截止到2级为止。
直接从Spring容器里拿的是c1 proxy或者c2 proxy,但是其实在属性注入的时候,都是调用的raw对象的set方法,也就是proxy的target调用的set方法。
循环依赖其实耐下功夫读源码,也没有那么难。下次分享为什么循环依赖的其中一个类添加@Async有可能会导致注入失败而抛异常
到此这篇关于Spring循环依赖原理与bean的生命周期图文案例详解的文章就介绍到这了,更多相关Spring循环依赖原理与bean的生命周期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java Spring循环依赖原理与bean的生命周期图文案例详解
本文链接: https://lsjlt.com/news/134329.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0