← 学习中心

Spring:IoC 容器与循环依赖

理解控制反转与依赖注入,重点掌握 Spring 用三级缓存解决单例循环依赖的原理与边界。

本节你将能

解释 IoC/DI 的概念,说清三级缓存如何解决 setter/字段注入的循环依赖,以及为什么构造器注入无解。

核心要点

  • IoC 把对象创建与依赖管理交给容器;DI 是其实现方式。
  • 三级缓存:singletonObjects(成品) / earlySingletonObjects(早期) / singletonFactories(早期引用工厂)。
  • 工厂延迟决定是否生成 AOP 代理,二级缓存固化早期结果,避免重复创建代理。
  • 构造器注入在实例化阶段就要完整参数,此时无早期引用可暴露,故无法解决循环依赖。

面试连招

追问:如果去掉二级缓存会怎样?多级缓存为何需要三级而不是两级?

Spring:IoC 容器与循环依赖 | 必学必会