温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot的相互依赖报错问题怎么解决

发布时间:2022-02-28 09:31:51 来源:亿速云 阅读:765 作者:iii 栏目:开发技术

本篇内容介绍了“springboot的相互依赖报错问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

springboot相互依赖报错

昨天在辛劳的进行代码搬运工作的时候,发现springboot项目的一个新建模块中service层的各个注解都变成了黑色,正常情况下应该是黄色的。

我觉得可能是一些springboot的相关组件没有引入pom文件

所以我对照着原来的模块直接复制了一些依赖

就出现了一个新大陆的报错

 Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [core,dao,service] are excluded from annotation processing .

经过反复咀嚼各大网站大佬的不食烟火的回答

我确定了

这,就是一个叫做“相互依赖”的错误,称之为依赖死循环

解决方法

打开相互依赖的模块的pom,删掉其中一个对另一个的依赖就行了

那怎么更明确的知道是哪几个模块相互依赖了呢

1.

springboot的相互依赖报错问题怎么解决

然后看到右边有红色的包依赖报错

2.红色框的就是两个模块之间互相依赖 、处理模块之间的依赖关系(模块之间不能有依赖)

springboot的相互依赖报错问题怎么解决

3.右键不想不依赖的包选中open module setting这个选项

springboot的相互依赖报错问题怎么解决

springboot项目处理循环依赖问题(circular reference)

springBoot启动失败,报错BeanCurrentlyInCreationException

org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'AxxxxService': 
Bean with name 'BxxxxService' 
has been injected into other beans [CxxxxService] in its raw version as part of a circular reference, 
but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - 
consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example. 

解决方法

  • 找到中括号中的Service: CxxxxService

  • 在CxxxxService中找到 BxxxxService(离得最近的,如果看不懂英文的话)的声明

  • 在BxxxService的声明上加注解 @Lazy

  • 注: 如果中括号中不止一个CxxxxService,每个都要这样做,加上@Lazy

悔恨

  • 我没有一开始就百度,解决方案,而是自以为是地组装新的Service类

  • 今天遇到一个中括号里有多个类的,要改的多了,就搜索一下人家的解决方案,流下了悔恨的眼泪

  • 现在才把代码调整回去了,已经晚上10点多了

  • 本来想试试revert, 过去太久,太多commit了,害怕了,退缩了

“springboot的相互依赖报错问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI