@MapperScan
和 @ComponentScan
是 Spring Boot 中两个不同的注解,它们用于不同的目的,尽管它们都涉及到包的扫描和组件的自动装配。
- @ComponentScan:
@ComponentScan
注解用于告诉 Spring 扫描指定的包及其子包以查找并注册 Spring 组件,如@Component
、@Service
、@Repository,而
不会自动扫描和注册 MyBatis 的 Mapper 接口,因为这些接口不是 Spring Bean。- 这个注解通常用于扫描并自动装配常规的 Spring 组件。
- @MapperScan:
@MapperScan
注解用于告诉 Spring Boot 扫描指定的包及其子包以查找并注册 MyBatis 的 Mapper 接口。- 这个注解通常用于扫描并自动注册 MyBatis Mapper 接口,使它们成为可用于数据库访问的 Spring Beans。
- 它是 MyBatis 和 Spring Boot 集成的一部分,用于将 MyBatis 的 Mapper 接口与 Spring 进行集成。
- 所以,主要的不同点在于目的和用途:
@ComponentScan
用于扫描和自动装配一般的 Spring 组件,而@MapperScan
用于扫描和自动注册 MyBatis Mapper 接口。另外,@ComponentScan
已经被@SpringBootApplication集成了,如果要扫描特定的bean对象,只需在类上面加上@Component
、@Service
、@Repository
就可以扫描到,如果不加这些注解,则可以在启动类上添加@MapperScan,用于扫描指定的包路径下的类。