MyBatis MapperScannerConfigurer 从类路径扫描基础包

MyBatis MapperScannerConfigurer to scan base package from classpath

我在 spring 应用程序上下文中配置了 MapperScannerConfigurer 如下:

<bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    <property name="basePackage" value="path.to.package.from.classpath.dao" />
</bean>

这里basePackage在类路径中设置的jar文件中。

包中的一个映射器自动连接到我正在使用的其中一项服务中。看起来 MyBatis 在这里无法从类路径中扫描包,因为我收到错误说明没有找到这样的 Bean:

No qualifying bean of type 'path.to.package.from.classpath.dao.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate.

我在网上搜索了一下,没有找到类似的场景。

我将在这里回答我自己的问题,因为它可能会帮助面临类似问题的人。

问题出在我最初创建 jar 的方式上。 iBatis 可能有不同的方式来扫描包,因为它正在工作,我认为同样可以用于 MyBatis。但是 MyBatis 可能有不同的扫描包的机制。看起来它正在寻找 jar 中的目录条目,如果找不到,它将抛出此异常。因此,请确保在创建 jar 时选择选项 Add directory entries,如下所示: