Mybatis-MapperScan注解扫描启动类所在包出现Warning
当MybatisAutoConfiguration使用AutoService加载时出现“No MyBatis mapper was found in ‘[启动类]’ package. Please check your configuration”警告
问题说明
最近在做一个环境底层包,使用core-db模块jar包封装数据访问相关的默认配置,包含MybatisPlus,由于各工程路径不一致,所以MapperScan的basePackages一定是需要通配符的,配置大概如下
1 |
|
在META-INF中添加spring.factories
文件内容如下
1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ |
利用Spring的装载机制导入Config类(由于包路径不同,Spring无法扫描到该类,故需要使用spring.factories
)
但是启动时会出现一个警告No MyBatis mapper was found in '[启动类所在包]' package. Please check your configuration.
问题分析
因为只是警告,并没有影响正常的功能使用,说明我自定义的MybatisPlusConfiguration
生效了,只不过在生效之前出现了警告。
说明该类的加载时在com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration
之后的
所以只需要保证自定义的Config在MybatisPlus定义的Config之前加载就可以了,正好有一个注解@AutoConfigureBefore
可以保证此顺序。
最终结果
1 |
|
总结
当使用spring.factories加载配置类时,无法保证顺序的话,可能会重复装载或装载无用类,导致出现警告或无法启动,只要注意装载顺序就可以了
灵感来源
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KTHIRTY!