> Spring通过三级缓存解决单例循环依赖。核心是提前曝光一个“半成品”对象,其中第三级缓存用于支持AOP。但此机制无法解决构造器注入等场景的循环依赖。 这是一个非常经典且重要的 Spring 面试题。我们来深入、系统地讲解一下 Spring 的循环依赖。 我会按照以下结构来为你剖析: 1. 什么是循环依赖? (What) 2. 循环依赖有什么问题? (Why it's a problem) 3. Spring 是如何解决的?(核心:三级缓存) (How Spring solves it) 4. 为什么需要三级缓存,二级不行吗? (Why three levels, not two) 5. 哪些场景下的循环依赖 Spring 无法解决? (When Spring can't solve it) 6. 作为开发者,我们应该如何处理或避免循环依赖? (Best practices) --- 1. 什么是循环依赖? 循环依赖(Circular Dependencies)指的是两个或多个 Bean 之间相互依赖,形成一个闭环。 最简单的例子是 A 依赖 B,同时 B 又依赖 A。 也可...