springboot项⽬之相互依赖报错问题(基于idea)
⽬录
springboot相互依赖报错
解决⽅法
springboot项⽬处理循环依赖问题(circularreference)
解决⽅法
springboot相互依赖报错
昨天在⾟劳的进⾏代码搬运⼯作的时候,发现springboot项⽬的⼀个新建模块中service层的各个注解都变成了⿊⾊,正常情况下应该是黄⾊的。
我觉得可能是⼀些springboot的相关组件没有引⼊pom⽂件
所以我对照着原来的模块直接复制了⼀些依赖
springcloud和springboot就出现了⼀个新⼤陆的报错
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.
然后看到右边有红⾊的包依赖报错
2.红⾊框的就是两个模块之间互相依赖、处理模块之间的依赖关系(模块之间不能有依赖)
3.右键不想不依赖的包选中open module setting这个选项
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了,害怕了,退缩了
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论