为什么错@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 时,它使用真正的里面的包名和不匹配。
我用 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 时,它使用真正的里面的包名和不匹配。