@MapperScan:
1.首先了解@Mapper
    在接口上添加了@Mapper,在编译之后就会生成相应的接口实现类。
    不过需要在每个接口上面进行配置,为了简化开发,就有了 @MapperScan。

@MapperScan:

指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类。

@ComponentScan:
会自动扫描包路径下面的所有@Controller、@Service、@Repository、@Component 的类,并把符合扫描规则的类装配到spring容器中。

@MapperScan和@ComponentScan可以同时使用。

如果都是扫描的相同路径时,对于同一个接口,可能就会出现识别错误。比如

在springBoot项目的Application上面定义了

@MapperScan(basePackages = { "com" })
@SpringBootApplication
@SpringBootApplication包含了@ComponentScan。
在此项目下面有一个接口是com.xxInf,实现是com.xxImpl在实现类上面通过@Service加入spring容器中
我们在注入的时候接口时
    @Autowired
private com.xxInf xx;

可能识别的不是xxImpl,而去mybatis里面通过反射找绑定,这样就会出现BindingException错误

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

所以在设计项目结构的时候要把mapper放到一个合适的位置,通过设置MapperScan的路径basePackages 好避免这种冲突

 
												

MapperScan和ComponentScan同时使用问题的更多相关文章

  1. @MapperScan 和 @ComponentScan 区别

    1.首先@MapperScan和@ComponentScan都是扫描包 2.@ComponentScan是组件扫描注解,用来扫描@Controller  @Service  @Repository这类 ...

  2. @MapperScan和@ComponentScan的区别

    区别 今天在撸SpringBoot的时候,突然对注解产生了混淆,@MapperScan和@ComponentScan都是扫描包,二者之间有什么区别呢? 首先,@ComponentScan是组件扫描注解 ...

  3. Spring Boot 报错记录

    Spring Boot 报错记录 由于新建的项目没有配置数据库连接启动报错,可以通过取消自动数据源自动配置来解决 解决方案1: @SpringBootApplication(exclude = Dat ...

  4. springboot 注册dao层 service 层

    可以使用三种注解来引入DAO层的接口到spring容器中.1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包中 ...

  5. springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.

    一.前言: 使用springboot自动注入的方式搭建好了工程,结果启动的时候报错了!!!,错误如下图: Description: Field userEntityMapper in com.xxx. ...

  6. 「小程序JAVA实战」springboot的后台搭建(31)

    转自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootdehoutaidajian31/ 根据下面的图,我们来建立下对应的sp ...

  7. spring mvc改造成spring boot

    一.新增依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. 聊聊、Spring ServletContainerInitializer

    我们平时用 Java 注解很多,例如 @Configuration.@Component.@Service,我们习惯于通过 XML 方式来实现 Web,而用 Java 注解方式来实现 Web 却很少. ...

  9. springboot 启动报错Consider defining a bean of type 'com.example.springbootdruid.mapper.UserMapper' in your configurati

    一.问题 springboot项目启动时报错: Field userMapper in com.example.springbootdruid.service.impl.UserServiceImpl ...

随机推荐

  1. python基础—字典的使用{}

    info = {'stu1':"lili", 'stu2':'yoyo', 'stu3':'dudu'}print(info)print(info['stu1'])info['st ...

  2. 转换流 InputStreamReader

    通常接触到字节流和字符流,但是有一个流是这两个流的桥梁,inputStreamReader 字符流的结构如下 可以看到inputStreamReader是继承Reader ,它的子类是FileRead ...

  3. ROS使用FLIR品牌的相机

    本文介绍如何将FLIR品牌的相机应用于ROS系统,将相机实时的数据以rostopic实时广播: 系统平台:Ubuntu16.04 LTS   ROS Kinetic 依赖:OpenCV(本例中所用版本 ...

  4. jQuery-4.动画篇---动画基础隐藏和显示

    jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...

  5. Python学习之路基础篇--03Python基础+万恶的运算符

    1 格式化输出% 用%s(用来表示str数据类型) 和 %d (用来表示int数据类型),如果要用%号的话,就要使用两个%%,这样即可输出. 2 初识编码 电脑的传输数据,储存都是用的 0101010 ...

  6. Golang安装与环境的配置

    (一) 不需FQ的情况 打开https://studygolang.com/ 下载相应的系统安装包. (二) 安装与环境配置 linux: 解压到指定目录: sudo tar zxvf [安装包的下载 ...

  7. hightcharts详细教程

    1.初始化highcharts var chart = Highcharts.chart('container', options); 2.options 自定义图表的配置项 const option ...

  8. maya权重拷贝一对一,一对多

    是不是有时候盔甲很多很碎头很大,用代理一个个拷贝很麻烦吧 用下面代码直接运行进行一对多或者一对一拷贝 第一个先选择参考物体,加选其他一堆有的没的有权重或没权重的物体执行一键拷贝,就可以啦 以下是源码送 ...

  9. python3+qqBot+图灵机器人实现qq聊天机器人

    原理: 通过Python3的qqBot开源库,基于腾讯的smartQQ协议登录个人QQ,实现监控.收集QQ消息,进而通过图灵机器人API接入方式实现自动聊天. 零.前期准备: 1.Python3 2. ...

  10. angular1中ng-repeat效率优化方法:

    1.当 ng-repeat 的数组被替换时, 它默认并不会重新利用已有的 Dom 元素,而是直接将其全部删除并重新生成新的数组 Dom 元素: 2.Dom 的频繁操作是非常不友好的, ng-repea ...