MapperScan导致SpringBoot自动注入出现duplicate

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

posted on 2020-09-07 15:21  月满清爵  阅读(546)  评论(0编辑  收藏  举报