Spring MyBatis @MapperScan basePackageClasses扫描整个包

时间:2016-02-10 16:35:52

标签: java spring mybatis ibatis spring-mybatis

我们的项目中有一个MyBatis配置文件,它使用带有basePackages的@MapperScan注释来扫描位于两个不同包中的现有映射器

@MapperScan(basePackages = { "com.somepackage.mappers", "com.someotherpackage.mappers" })

其中com.someotherpackage.mappers实际上是另一个jar文件中的包,它是对我们自己的项目的依赖。我们现在需要从扫描中排除com.someotherpackage.mappers中的一些映射器,因为它们实际上并没有被我们的项目使用,但它们在执行期间会导致问题(症状实际上是“找不到结果映射:someResultMapFromSomeOtherPackageThatWeDontUseAtAll”)< / p>

如果我们将其缩减为

@MapperScan(basePackages = { "com.somepackage.mappers" })

然后它只按预期正确扫描来自com.somepackage.mappers的映射器。现在我们想用@MapperScan的basePackageClasses来扩展它,以便只从com.someotherpackage.mappers中定义必要的映射器进行扫描,但是如果我们给它像

那么
@MapperScan(basePackages = { "com.somepackage.mappers" }, basePackageClasses = { SomeMapperThatWeNeedFromSomeOtherPackage.class } )

这再次导致com.someotherpackage.mappers中的所有映射器被扫描,而不仅仅是我们期望的SomeMapperThatWeNeedFromSomeOtherPackage

我们是否误解了basePackageClasses的功能/这个问题可以解决的方式是什么?

0 个答案:

没有答案