分享

为什么阿里那么难进,原来精髓在这

 泰荣林黑皮 2020-07-14

最近很多水友在后台留言问关于Spring的循环依赖问题,这也是最近两年新出的面试频度较高的面试题!

下面我们就通过这篇文章让大家了解循环依赖的问题

什么是循环依赖?

循环依赖其实是指两个及以上bean相互持有对方,最终形成闭环的过程(一般聊循环依赖都是默认的单例bean),简单说就是A依赖B,B依赖C,C又依赖A。

其实在Spring中,有两种循环依赖的场景...

  • 第一种:构造器的循环依赖

  • 第二种:setter的依赖注入


第一种是没有办法解决的,而第二种可以使用提前暴露对象的方式进行解决


那么肯定有很多小伙伴会有疑问,为什么?

其实想搞明白这个问题,需要对Spring的Bean的生命周期有一个完整的了解,如下图:

大家可能对这个图不太熟悉,但是我要强调的是,图中我已经用三种颜色标识了,除了使用这部分之外,可以分为实例化和初始化,这也是解决问题的核心。

同时,Spring中还使用了三级缓存来解决问题:


上图就是Spring中的三级缓存,那么问题来了

  • Spring是如何通过三级缓存来解决问题的?

  • 一级缓存能不能解决?为什么?

  • 二级缓存能不能解决?为什么?

  • 为什么非要使用三级缓存?使用三级缓存是为了解决什么问题?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多