Skip to content

怎么解决的循环依赖 ​

题目 ​

Spring 是怎么解决循环依赖的?

参考答案 ​

Spring 主要通过三级缓存解决单例 Bean 的 setter 循环依赖:

  • 一级缓存:成品 Bean
  • 二级缓存:早期曝光对象
  • 三级缓存:对象工厂

注意点:

  • 主要针对单例 Bean
  • 构造器循环依赖通常解决不了

回答展开 ​

  • Spring 题回答时最好从容器、代理和生命周期三个角度切入。
  • 如果涉及事务或 AOP,一定要强调代理对象这一层。
  • 如果是 Spring Boot 题,要把自动装配和条件注解说清楚。

实际场景 ​

比如项目启动时的数据源、Mapper、Service、Controller 都是由 Spring 容器统一创建和管理的,这些题本质上都和容器能力有关。

努力工作 享受生活