## 二、什么是循环依赖
循环依赖直白点就是发生在两个类,`你引用我,我引用你`的状态,如图:

## 三、如果不依赖于Spring自己
解决循环依赖如何
解决
以上图为例,假设,我们能够创建完成`AService`之后,放置到到
一个缓存中,再去注入
属性!每次注入
属性的时候,所需要的
属性值都从缓存中
获取一遍,缓存中没有再去创建不就
解决了?如图所示:

总结一下上面的流程:
1. `AService`创建完成后将自己加入到二级缓存,然后开始注入
属性
2. 发现`AService`依赖`BService`于是先
查询一级缓存是否有数据一级缓存没有就
查询二级缓存,有就返回,没有就创建`BService`
3. 缓存中没有,开始实例化`BService`,然后注入内部
属性!
4. 注入内部
属性时发现依赖`AService`,于是先
查询一级缓存是否有数据一级缓存没有就
查询二级缓存,有就返回,没有就创建,很显然,二级缓存是有数据的。于是从二级缓存取出`AService`注入到`BService`。
5. `BService`创建完成后将自己从二级缓存挪到一级缓存,并返回。
6. `AService`
获取到`BService`后,注入到自己的
属性中并把自己从二级缓存挪的一级缓存,返回`AService`!
7. 至此,循环依赖创建完成!
那么有了上面的思路,我们如何用
代码实现一遍我们的逻辑呢?
### 那么如何才能正确的掌握Re
dis呢?
为了让大家能够在Re
dis上能够加深,所以这次给大家准备了一些Re
dis的学习资料,还有一些大厂的面试题,
包括以下这些面试题
* 并发编程面试题汇总
* JVM面试题汇总
* Netty常被问到的那些面试题汇总
* Tomcat面试题整理汇总
*
MysqL面试题汇总
* Spring源码深度解析
* Mybatis常见面试题汇总
*
Nginx那些面试题汇总
* Zookeeper面试题汇总
* RabbitMQ常见面试题汇总
JVM常频面试:

MysqL面试题汇总(一)

MysqL面试题汇总(二)

Re
dis常见面试题汇总(300+题)

**有需要的朋友,可以[直接点击这里免费
获取](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**
绝无套路!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。