昌乐营销型网站建设,建站视频网站,做英雄联盟网站的图片素材,王野天师报错如下 原因#xff1a;当MapperScan和ComponentScan一起使用时#xff0c;项目启动时扫描包会发生冲突#xff0c;找不到swagger配置类的包和mapper接口的包
解决办法#xff1a;MapperScan和ComponentScan可以一起使用。
改为MapperScan#xff08;basePackages {}…报错如下 原因当MapperScan和ComponentScan一起使用时项目启动时扫描包会发生冲突找不到swagger配置类的包和mapper接口的包
解决办法MapperScan和ComponentScan可以一起使用。
改为MapperScanbasePackages {}的形式。
或者只使用MapperScan去扫描mapper包让项目启动自己去扫描swagger配置类的包
课外拓展
MapperScan
1.首先了解Mapper
在持久层的接口上添加Mapper注解,编译后会生成相应的接口实现类但由于要在每个接口上都进行配置所以产生了MapperScan。
2.MapperScan
指定要编译成接口实现类的包路径在编译完成后这个包下的所有接口都会生成相应的接口实现类。
ComponentScan
1.会自动扫描包路径下的Controller、Service、Repository、Component类符合扫描规则的类会装配到spring容器中。
2.MapperScan和ComponentScan可以同时使用
如果MapperScan和ComponentScan扫描的是同一路径会产生错误所以
MapperScan(basePackages { com })
SpringBootApplication项目场景
最近在使用SpringBoot搭建项目使用了Mybatis的generator自动生成mapper和mapper.xml。在mapper注入的时候发现自己对mapperscan、mapper、componentscan注解的理解不是很深入因此在这里记录一下。
问题描述
SpringBoot项目启动后发现mapper并没有注入到容器中。分析原因是在mapper类中少加了mapper注解或者是主启动类中没有加mapperscan注解。其实归根结底还是因为对于这三个注解理解不深。 三种注解区别
ComponentScan注解
ComponentScan就是告诉Spring从哪里找到bean Spring会在应用主程序所在的包及其子包下进行全局扫描把对应的bean注入到容器中这里面的bean包括service mapper resposioty controller 所以在springboot程序中如果有mapper注解的话 就不用再加mapperscan注解springboot注解自带componentscan会扫描到。
MapperScan注解
Mapper注解可以在编译之后生产对应的接口实现类如果要每个接口都编程实现类需要在每个接口上加上Mapper注解比较麻烦解决这个问题用的是MapperScan注解mapperscan注解后面可以加value指定要扫描的包即可实现mapper的注入。
其实MapperScan完成了两件事情
根据配置的路径进行mapper.java的扫描 此处扫描到的就是mapper下的java文件为扫描到的mapper进行注册BeanDefinition。