@ComponentScan和@MapperScan的区别

有时候我们Spring项目启动后发现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。

posted @ 2021-11-25 11:37  Yapi酱  阅读(841)  评论(0编辑  收藏  举报