为什么错@MapperScan可以运行 ok

Why wrong @MapperScan can run ok

我用 mybatis plus 创建了一个简单的 spring 引导项目,我可以 运行 用 @MapperScan("xxx.xxx.xxx.Mapper") 很好地完成它。但是,我的映射器文件位于文件夹 xxx/xxx/xxx/mapper 中,所以很奇怪。使用 @MapperScan("xxx.xxx.xxx.Mapper"),我可以 运行 项目正确,但在将其打包为 jar 后,运行 jar 文件将出现 bean factory 找不到 mapper bean 的错误。改正后@MapperScan("xxx.xxx.xxx.mapper"),打包工程,错误消失
我不知道为什么会这样。

Java 是 case-sensitive,包括包名称。您在 Windows 上 运行,并且通常 NTFS 文件系统不是 case-sensitive。最有可能的是,当 Boot 执行扫描时,不正确的 Mapper 恰好与 NTFS 中的实际目录名称 mapper 匹配,并且它找到了您的 bean,但是当它打包 jar 时,它使用真正的里面的包名和不匹配。