Skip to content

面试速答(先看这里)

**一句话结论:**也就是说, Spring虽然引入了三级缓存来解决循环依赖,但是Spring依然认为循环依赖时不合理的,所以他默认关闭了对循环依赖的支持。

60秒标准回答:

默认支不支持要看版本,在SpringBoot 2.6以前,是默认支持的,但是在 SpringBoot 2.6 开始,默认已经不开启对循环依赖的支持了

在SpringBoot 2.6及以后版本中,如果代码中出现Spring的Bean的循环依赖,启动会报错,如以下是我的 数藏项目 中关于出现循环依赖时的报错

提示是有一个循环依赖的问题,即 PayApplicationService -> PayChannelServiceFactory -> MockPayChannelService -> PayApplicationService

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**默认支不支持要看版本,在SpringBoot 2.6以前,是默认支持的,但是在 SpringBoot 2.6 开始,默认已经不开启对循环依赖的支持了。
  • **要点2:**在SpringBoot 2.6及以后版本中,如果代码中出现Spring的Bean的循环依赖,启动会报错,如以下是我的 数藏项目 中关于出现循环依赖时的报错:
  • **要点3:**提示是有一个循环依赖的问题,即 PayApplicationService -> PayChannelServiceFactory -> MockPayChannelService -> PayApplicationService
  • **要点4:**1、在配置文件中加入 spring.main.allow-circular-references=true
  • **要点5:**2、用 @Lazy 注解,在 @Autowired 地方增加即可。

**记忆锚点:**Spring → SpringBoot → PayApplicationService → PayChannelServiceFactory → MockPayChannelService → 虽然引入了三级缓存

加分表达:

  • 如果想要开启对循环依赖的支持,有以下几种办法: 1、在配置文件中加入 spring.main.allow-circular-references=true 2、用 @Lazy 注解,在 @Autowired 地方增加即可。
  • 在SpringBoot 2.6及以后版本中,如果代码中出现Spring的Bean的循环依赖,启动会报错,如以下是我的 数藏项目 中关于出现循环依赖时的报错: 提示是有一个循环依赖的问题,即 PayApplicationService -> PayChannelServiceFactory -> MockPayChannelService -> PayAppl…

追问准备:

  • 围绕「Spring」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「SpringBoot」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「PayApplicationService」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

默认支不支持要看版本,在SpringBoot 2.6以前,是默认支持的,但是在 SpringBoot 2.6 开始,默认已经不开启对循环依赖的支持了。

在SpringBoot 2.6及以后版本中,如果代码中出现Spring的Bean的循环依赖,启动会报错,如以下是我的数藏项目中关于出现循环依赖时的报错:

提示是有一个循环依赖的问题,即 PayApplicationService -> PayChannelServiceFactory -> MockPayChannelService -> PayApplicationService

也就是说,Spring虽然引入了三级缓存来解决循环依赖,但是Spring依然认为循环依赖时不合理的,所以他默认关闭了对循环依赖的支持。

📄 ✅三级缓存是如何解决循环依赖的问题的?

打开文档:✅三级缓存是如何解决循环依赖的问题的?

如果想要开启对循环依赖的支持,有以下几种办法:

1、在配置文件中加入spring.main.allow-circular-references=true

2、用@Lazy 注解,在@Autowired 地方增加即可。

java
@Autowired
@Lazy
private PayChannelServiceFactory payChannelServiceFactory;

📄 ✅@Lazy注解能解决循环依赖吗?

打开文档:✅@Lazy注解能解决循环依赖吗?