编程语言
首页 > 编程语言> > 我在华为做Java外包的真实经历!使用指南

我在华为做Java外包的真实经历!使用指南

作者:互联网

## 二、什么是循环依赖 循环依赖直白点就是发生在两个类,`你引用我,我引用你`的状态,如图: ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625536146399836.jpg) ## 三、如果不依赖于Spring自己解决循环依赖如何解决 以上图为例,假设,我们能够创建完成`AService`之后,放置到到一个缓存中,再去注入属性!每次注入属性的时候,所需要的属性值都从缓存中获取一遍,缓存中没有再去创建不就解决了?如图所示: ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625536146285727.jpg) 总结一下上面的流程: 1. `AService`创建完成后将自己加入到二级缓存,然后开始注入属性 2. 发现`AService`依赖`BService`于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建`BService` 3. 缓存中没有,开始实例化`BService`,然后注入内部属性! 4. 注入内部属性时发现依赖`AService`,于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建,很显然,二级缓存是有数据的。于是从二级缓存取出`AService`注入到`BService`。 5. `BService`创建完成后将自己从二级缓存挪到一级缓存,并返回。 6. `AService`获取到`BService`后,注入到自己的属性中并把自己从二级缓存挪的一级缓存,返回`AService`! 7. 至此,循环依赖创建完成! 那么有了上面的思路,我们如何用代码实现一遍我们的逻辑呢? ### 那么如何才能正确的掌握Redis呢? 为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题 * 并发编程面试题汇总 * JVM面试题汇总 * Netty常被问到的那些面试题汇总 * Tomcat面试题整理汇总 * Mysql面试题汇总 * Spring源码深度解析 * Mybatis常见面试题汇总 * Nginx那些面试题汇总 * Zookeeper面试题汇总 * RabbitMQ常见面试题汇总 JVM常频面试: ![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625536147713008.jpg) Mysql面试题汇总(一) ![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625536147605201.jpg) Mysql面试题汇总(二) ![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625536147745232.jpg) Redis常见面试题汇总(300+题) ![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625536147671590.jpg) **有需要的朋友,可以[直接点击这里免费获取](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)** 绝无套路!!

标签:面试题,缓存,Java,Redis,AService,汇总,华为,使用指南,com
来源: https://blog.51cto.com/u_15290981/2985767