首页 > PHP资讯 > JAVA培训 > 什么是循环依赖?

什么是循环依赖?

JAVA培训

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

 

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


第一种:构造器的循环依赖
第二种:setter的依赖注入

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

那么肯定有很多小伙伴会有疑问,为什么?
其实想搞明白这个问题,需要对Spring的Bean的生命周期有一个完整的了解,如下图:

 

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

 

本文来源于欣才IT学院原创发布,未经许可,禁止转载。