Mybatis报错ConflictingBeanDefinitionException

1.结果

    修改@MapperScan的扫描位置,直接定位到Mapper目录

2.情况说明

  负责的spring cloud项目增加了一个业务模块,为了防止以后需要进行拆分就在对应的一级目录下新建一个子目录,由于之前的只有一个业务模块,所以之前只扫描了对应目录,此次新增的模块暂时是扫描不到mapper的.为了能够扫描到所以的mapper目录,在启动类上修改了扫描的路径,直接扫描一级目录,使得新旧的二级目录均可以被扫描到,结果启动报错,org.springframework.context.annotation.ConflictingBeanDefinitionException.结果排查,确认确实有俩个依赖的服务的API名字一样,这个确实有问题,但是依赖早就有了不是此次增加的.经过debug发现 @MapperScan注解会进行初始化Bean操作,排查代码之后也同时发现重名的api名称,业务并没有使用,所以不应该被初始化才对.此次版本修改之前服务都能正常启动,并没有增加其他相关的配置,确认@MapperScan扫描的位置有问题,修改@MapperScan的扫描位置,直接定位到Mapper目录.

3.备注

  (1).名称重复的问题也暴露出来了,百度一番发现可以进行修改相关Bean初始化的解析器

  (2)Mapper扫描的位置问题,也是值得自己反思,居然直接加到一级目录,多初始化了很多东西

  (3)查看代码变更情况,分析代码修改影响范围的能力很重要

 

你可能感兴趣的:(工作日常,Feign,SpringCloud,Mybatis,@MapperScan)