@MapperScan通配

本文分享了一个关于MyBatis框架中使用@MapperScan注解时遇到的问题及解决方案。作者指出,在配置该注解扫描包路径时,使用多个星号可以成功识别映射器接口,为遇到相同问题的开发者提供了实用的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

貌似网上没有,这里写出来,能给搜索的同学帮助

@MapperScan(basePackages = "com.th.**.mapper")

单个星号试过貌似不行,加多个星号就可以了

### `@MapperScan` 与 `@ComponentScan` 的区别和使用方法 #### 功能区别 `@ComponentScan` 是 Spring 框架的核心功能之一,用于自动扫描和注册带有 `@Component`、`@Service`、`@Repository` 或 `@Controller` 等注解的类,并将其注册为 Spring 容器中的 Bean。该注解常用于管理用的 Spring 组件[^1]。 `@MapperScan` 是 MyBatisSpring 集成的一部分,专门用于扫描和注册 MyBatis Mapper 接口。过 `@MapperScan` 可以避免在每个 Mapper 接口上单独添加 `@Mapper` 注解,从而简化置并提高开发效率[^4]。 #### 使用方式 `@ComponentScan` 常由 `@SpringBootApplication` 自动启用,默认会扫描主程序所在包及其子包下的组件。如果需要扩展扫描路径,可以显式声明 `@ComponentScan` 并指定额外的包路径[^3]。 ```java @SpringBootApplication @ComponentScan("com.example.service") public class Application { // ... } ``` `@MapperScan` 必须显式置扫描路径,支持动态代理生成接口实现类。当 `@MapperScan` 和 `@ComponentScan` 同时使用时,应避免两者扫描同一路径,否则可能导致冲突或扫描不到某些类。推荐将 `@MapperScan` 单独用于扫描 Mapper 包,而 `@ComponentScan` 用于其他组件[^2]。 ```java @SpringBootApplication @MapperScan("com.example.mapper") public class Application { // ... } ``` #### 实际影响 尽管 `@ComponentScan` 可以扫描到部分 MyBatis Mapper 类(例如带有 `@Mapper` 注解的类),但这种方式并不推荐。MyBatis 的 Mapper 接口需要特定的处理逻辑,如动态代理生成实现类,因此必须依赖 `@MapperScan` 来正确注册这些接口[^5]。 此外,在 OSGi 或模块化项目中,若未正确置 `@MapperScan`,可能会导致模块解析失败或依赖关系无法正确建立。这进一步强调了 `@MapperScan` 在 MyBatis 项目中的必要性。 --- #### 示例:如何查看和修改 `@MapperScan` 置 可以过以下方式在 Maven 项目中自定义 `@MapperScan`: ```xml <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper"/> </bean> ``` 或者在 Java 置类中使用: ```java @Configuration @MapperScan("com.example.mapper") public class MyBatisConfig { // ... } ``` --- ### 总结 `@ComponentScan` 与 `@MapperScan` 虽然都用于扫描类,但它们的功能和适用范围不同。`@ComponentScan` 适用于用的 Spring 组件,而 `@MapperScan` 专用于 MyBatis Mapper 接口。合理使用这两个注解可以有效提升项目的可维护性和开发效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值