iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >SpringBoot项目启动失败报错Annotation-specified bean name ‘xx‘ for bean class [xxx] conflicts with existing
  • 425
分享到

SpringBoot项目启动失败报错Annotation-specified bean name ‘xx‘ for bean class [xxx] conflicts with existing

springbootspringjava 2023-08-16 15:08:33 425人浏览 独家记忆
摘要

问题描述 SpringBoot项目,更改项目内容和文件结构之后启动报错 Annotation-specified bean name ‘xx’ for bean class

问题描述

SpringBoot项目,更改项目内容和文件结构之后启动报错

Annotation-specified bean name ‘xx’ for bean class [xxx] conflicts with existing, non-compatible bean definition of same name and class[xxx]

问题分析

正在做的工作是将之前旧的项目进行功能拆分作为微服务独立出来, 其中一个部分在更新目录结构的过程中出现了工程中不同文件夹中复制了多分旧的工程的同一个文件的类,导致这一个工程当中有重名的两个甚至多个bean, 在启动时提示以上错误
关键字:Bean重复

问题解决

既然知道了问题原因,那么解决起来也比较简单,以使用idea为例,通过菜单栏打开使用全局搜索选项或者使用快捷键
Ctrl+Shift+F来打开
打开全局搜索
查找提示中出现问题的类名,找到使用@Service\ @Controller \ @repository(要是集成了Mybatis一般就就可以忽略这个注解的)标注的重复类,此时如果不使用命名例如(@Service("xxx1Impl")),那么spring会在扫描时,将类名首字母小写作为key,放到一个全局Map中维护就会出现重复问题
刪除重复的Bean

将不需要的类删除掉,问题解决。
如果确实需要保留重复的类,那么请将bean的名称进行重命名,确认Spring容器当中bean的名称不重复。在使用@Autowired自动装配的时候以Service层为例加上:

  1. 使用@Primary注解在Service层上 使用该注解的实现类会被优先注入
@Service@Primarypublic class DoMyJobServiceImpltwo implements DoMyJobService{  @Override  public String getJoboName() {    return "横眉冷对千夫指";  }}        
  1. 使用@Qualifier注解在Controller层与@Autowired共同使用,装配指定名称的bean

注意:使用@Qualifier注入指定Bean的时候,若没有指明Bean的名称,则其默认名称是首字母小写的类名

@RestControllerpublic class ShowFakeNewsController {  //此时已经不需要在DoMyJobServiceImpltwo上写@Primary注解了  @Autowired  @Qualifier("doMyJobServiceImpltwo")  private VideoService videoService;  @RequestMapping("/fakeNews")  public String fakeNewsName(){    return videoService.getFakeNewsName();  }}        

来源地址:https://blog.csdn.net/weixin_60257072/article/details/128722858

--结束END--

本文标题: SpringBoot项目启动失败报错Annotation-specified bean name ‘xx‘ for bean class [xxx] conflicts with existing

本文链接: https://www.lsjlt.com/news/371436.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作