循环依赖导致编译或者服务启动报错问题:The dependencies of some of the beans in the application context form a cycle

错误如图:

 我的是服务器启动服务时报错:


***************************
APPLICATION FAILED TO START
***************************

Description:

The dependencies of some of the beans in the application context form a cycle

报错原因:

两个类相互引用对方,导致Spring在初始化bean的时候不知道先初始化哪个,从而形成循环依赖注入。

解决方法:
1、其中一个不要引用对方,避免循环依赖

2、任选其中一个使用@Lazy 注解。

Spring在应用程序上下文启动时去创建所有的单例bean对象, 而@Lazy注解可以延迟加载bean对象,即在使用时才去初始化.

所以,@Lazy注解, 一是可以减少Spring的IOC容器启动时的加载时间, 二是可以解决bean的循环依赖问题,如图:

  我使用的是这个注解,最后,搞定!

3、使用mapper对象去调用API的方式。
一般情况下,mapper类都是被service引用的,而mapper不会引用service。
当然,这个仅仅行为习惯上的的一个规范,并不是必须,不排除有人在mapper类里面引用service对象,那这样就还是可能会有循环依赖的问题。
所以,这个方案不优先建议,仅作为规范编码的基础上的参考方案。


posted @   小年的西瓜  阅读(649)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示