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

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

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

场景

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

解决方法一

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

解决方法二

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

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

(重构前)

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

解决方法三

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

相关推荐
qianbailiulimeng7 小时前
【Spring Boot】Spring Boot解决循环依赖
java·后端
江湖人称小鱼哥7 小时前
Redisson 与 Spring Boot 3.4 整合指南
spring boot·redis·后端·redission
donotshow7 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
鬼火儿7 小时前
Spring Boot 整合 ShedLock 处理定时任务重复
java·后端
王元_SmallA7 小时前
【Spring Boot】Spring Boot解决循环依赖
java·后端
小圆5318 小时前
java-learn(9):常见算法,collection框架
java·开发语言·算法
nbsaas-boot8 小时前
SaaS 租户上下文传播架构
java·架构·saas
洛卡卡了8 小时前
一次上线事故,我干脆写了套灰度发布系统
后端·面试·架构
Java水解8 小时前
【Spring Boot】Spring 魔法世界:Bean 作用域与生命周期的奇妙之旅
spring boot·后端