Spring Boot解决循环依赖的几种办法

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

本文介绍解决循环依赖的几种方法

场景

创建了两个 Service 实现类,互相注入对方

解决方法一

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

解决方法二

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

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

(重构前)

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

解决方法三

不要用自动装配,手动从 Spring 容器中获取,如下:

相关推荐
techdashen3 分钟前
Cloudflare 如何用 Rust 构建一个高性能解释器
开发语言·后端·rust
sing~~6 分钟前
SpringCloud的了解和使用
后端·spring·spring cloud
Gofarlic_OMS9 分钟前
UG/NX许可证管理高频技术问题解答汇编
java·大数据·运维·服务器·汇编·人工智能
逐星ing13 分钟前
IDEA 无法识别 `mvn install` 最新 SNAPSHOT 依赖的根因与完整解决方案
java·ide·intellij-idea
神奇小汤圆14 分钟前
K8s生产环境那些文档不会告诉你的坑
后端
流觞 无依21 分钟前
Spring Boot 未授权访问漏洞排查与修复指南
java·spring boot·后端
Java开发的小李23 分钟前
SpringBoot 高流量高并发 基础全面讲解
java·spring boot·后端·性能优化
Flynt26 分钟前
Uber 75000测试类JUnit迁移:OpenRewrite+Bazel实战
后端
Kqwert26 分钟前
C# PDF转图片工具类 - 基于Docnet和SkiaSharp的实现
后端
随风,奔跑28 分钟前
Spring Cloud Alibaba(六)-链路追踪SkyWalking
java·后端·spring·skywalking