Spring Boot进阶:原理、实战与面试题分析
上QQ阅读APP看书,第一时间看更新

2.3 Spring循环依赖案例分析

在介绍三种不同的依赖注入类型时,我们引出了使用Spring IoC容器时的一个常见问题,即循环依赖。同时也明确了在单例作用域下,Setter方法注入能够解决循环依赖问题,而构造器注入则不能。你可能好奇在这背后Spring具体的实现过程,作为一个专题,本节也会对这个话题做深入分析。

对于单例作用域来说,Spring容器在整个生命周期内,有且只有一个Bean对象,所以很容易想到这个对象应该存在于缓存中。Spring为了解决单例Bean的循环依赖问题,使用了三级缓存。这是Spring在设计和实现上的一大特色,也是开发人员在面试过程中经常遇到的话题。