我之前运到过相同的报错,主要原因是因为Bean名重复的问题:
Bean重复导致出现Annotation-specified bean name ‘xx’ for bean class [xxx] conflicts with existing, non-compatible bean definition of same name and class[xxx]错误
这一次有所不同
使用SpringBoot框架开发项目,由于优化目录结构的需要,更改了很多文件的位置,以及拆分微服务的过程中出现了一个异常,non-compatible bean definition of same name and class [com.xxx.ClassA],主要意思是:存在相同的实现类名称在不同的package目录下,只要明白了这个含义就很容易解决问题,该问题主要可能存在两种情况。
完整的错误提示:
Annotation-specified bean name 'classA' for bean class
[com.xxx.ClassA] conflicts with existing,
non-compatible bean definition of same name
and class[com.xxx.ClassA]
我产生问题的主要原因有两个
原因:可能是原先创建了一个接口的实现类,后来在项目过程中移动了改接口实现类的位置,但是重新打包的时候,并没有进行clean一下,导致打出来的Jar(War)包里面的class存在了两个。
解决方法:一般这种情况可以尝试:maven clean一下, project clean一下。 将项目原先jar包删除,重新打包。IDEA可以直接maven clean之后 rebuild project
Link
原因:在项目中通过复制某个实现类的代码,忘记修改实现类中@Service注解中的方法名称,导致项目中存在两个一样的实现类注解名称,我在之前遇到过类似问题,详情请参考开头引入的文章
解决方法:找到所有实现类,打开查看是否与实现类名称保持类似, 存在一样的实现类名称进行修改, 重新运行即可