在SpringBoot中我们配置Mybatis的扫描是很简单的,最简单粗暴的方法是直接在类上注解 @MapperScan("你的项目根包"),
然后你就会惊喜的发现,Mybatis帮你把所有的接口都做了一个动态代理...为所有的接口都做了一个实现类,无差别攻击。
这是因为,Mybatis的默认机制是会对MapperScan中basePackage包下的所有接口都生成一个代理实现类。
这个代理类会和我们自定义添加了组件注解的实现类产生冲突,从而导致出现重复声明
解决方案:
1.指定MapperScan扫描特定的mapper包,而不是直接扫描根目录
2.为自定义的实现类添加@Primary注解,表明优先注入自定义实现类