@MapperScan和@ComponentScan的区别
@MapperScan的用法:
@MapperScan是MyBatis-Spring集成中的一个注解,专门用于扫描和注册Mapper接口为Spring管理的bean。Mapper接口是MyBatis中用于定义SQL映射规则的接口,通过@Mapper注解标注。@MapperScan可以帮助Spring自动找到这些接口并将其注册为代理bean,从而在应用中可以方便地使用这些Mapper接口。
@MapperScan可以指定扫描的mapper包路径,然后将其注册成bean,此时对应的mapper包类下不需要加注解@Mapper,因为@MapperScan可以指定扫描的mapper包路径,然后将其注册成bean。
mapper包下的mapper类:
那什么时候需要加@Mapper注解呢?
- 当启动类没有配置对应的@MapperScan注解时,需要在每个mapper包下的类添加@Mapper注解,且所在的mapper包必须在启动类所在的包及其子包下,因为 @SpringBootApplication注解里面有对应的@ComponentScan,它会扫描启动类所在的包及其子包中含有的@Mapper并将其注册成bean
- @SpringBootApplication内如图所示:
@ComponentScan的用法:
@ComponentScan是Spring框架中的一个注解,用于自动扫描和注册带有特定注解的组件为Spring管理的bean。当一个类被@Component、@Service、@Repository或@Controller等注解标注时,Spring可以通过@ComponentScan自动检测到这些类,并将它们注册为bean。
两者区别:
- @ComponentScan 是Spring框架的核心功能,用于扫描含有@Component、@Service、@Repository或@Controller等注解的类并将其注册。
- @MapperScan 是MyBatis-Spring集成的一部分,专门用于扫描和注册MyBatis Mapper接口。