IDEA启动Spring Boot服务Bean重名、依赖工程冲突问题

在IDEA中,一个A工程引用了B工程,由于资源复制导致beanName冲突,服务启动失败。尝试了自定义beanName、配置@Configuration注解以及修改pom.xml的optional属性均未解决问题。最终发现是IDEA的模块设置问题,删除.iml文件中的模块依赖或在项目结构中移除依赖后,问题得到解决。问题根源是maven下载源码导致的资源冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

问题背景:
①微服务、maven、Idea
②A工程的pom.xml中引用了B工程

在这里插入图片描述

问题描述

服务启动报错:Annotation-specified bean name ‘redisConfig’ for bean class;原因是beanName冲突。


原因分析:

尝试了很多方法,包括

自定义beanName:新建类 MyBeanNamegenerator implements BeanNameGenerator,重写generateBeanName方法,然后在启动类@ComponentScan注解中配置属性nameGenerator = MyBeanNamegenerator.class,未生效;

@Configuration注解中定义value属性@Configuration(value = "xxxRedisConfig"),结果此处不再报错,工程中其他被@Configuration@RestController注解标注的地方报同样的错;

pom.xml文件中依赖包的配置出增加<optional>true</optional>,同样未生效;


解决方案:

最后发现,在服务启动,build的时候有个Copying resources...的动作,而且不光copy了本A工程的resources,还将pom.xml中引入的其他B工程的resources也copy了。后来试了一下A工程单独工作空间启动,build时不再copy其他工程,服务启动成功。
在这里插入图片描述
由此可以推断是idea的问题,发现根目录下xxx.iml文件中存在<orderEntry type="module" module-name="xxx-service" />,在此删除或者在

File - Project Structure - Modules - Dependencies

中,找到依赖的类,右击remove,然后Apply。启动成功。
根本原因是maven-Download Sources导致的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值