springboot项目之相互依赖报错问题(基于idea)
目录
- springboot相互依赖报错
- 解决方法
- springboot项目处理循环依赖问题(circularreference)
- 解决方法
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 .经过反复咀嚼各大网站大佬的不食烟火的回答
我确定了
这,就是一个叫做“相互依赖”的错误,称之为依赖死循环
解决方法
【springboot项目之相互依赖报错问题(基于idea)】打开相互依赖的模块的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了,害怕了,退缩了
推荐阅读
- springboot打包实现项目JAR包和依赖JAR包分离
- spring|Java最全面试题之Spring篇
- java|java 内存模型面试题_【017期】JavaSE面试题(十七)(JVM之内存模型)
- amqp协议|amqp协议 面试_持续输出面试题之RabbitMQ篇
- android|IntelliJ Plugin 开发之调试运行、部署、本地安装和发布项目到仓库(三)
- 手写|手写 Vue 系列 之 从 Vue1 升级到 Vue2
- 聊聊如何让springboot拦截器的执行顺序按我们想要的顺序执行
- java架构之路-(微服务专题)nacos集群精讲实战
- 计算机网络|网络编程实战之高级篇, 彻底解决面试C10k问题, 高并发服务器, IO多路复用, 同时监视多个IO事件
- javaEE|MyBatis学习之初窥门径