说明:Spring Boot 循环依赖,是指两个或两个以上的 Bean 对象,你装配我,我装配你,形成一个循环,导致项目启动时,无法完成 Bean 的初始化,报下面这种错误。

本文介绍解决循环依赖的几种方法
场景
创建了两个 Service 实现类,互相注入对方

解决方法一
最简单,最快捷的,是在其中一个 Bean 装配时,加上 @Lazy 注解,懒加载,如下:

解决方法二
重构代码,引入中间层,将互相使用到的方法加入到新的 Service 中,然后装配这个新的 Service,如下:

为了解决 Service1、Service2 之间的循环依赖,要额外创建两个 Service,结构如下:
(重构前)

(重构后:将 Service1、Service2 中互相调用的代码搬到 Service3、Service4中)

解决方法三
不要用自动装配,手动从 Spring 容器中获取,如下:
