SpringBoot下使用tk.mapper遇到的小坑

前言:在使用同事封装的自定义通用mapper接口工具模块时,出现扫描不到业务模块的mapper接口报出控制器、服务实现类依赖无法满足问题。

错误类似以下内容(当时并没有保存日志):

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘userController’: Unsatisfied dependency expressed through field ‘userMapper’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.minibike.bike.user.dao.UserMapper’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}”

1.从日志得到的信息

控制器、服务实现类的依赖无法满足是因为UserMapper这个bean没有被注入(可以从该句看出:expected at least 1 bean which qualifies as autowire candidate.)

2.大致的分析

既然UserMapper这个bean没有被装配成功,那么问题可能出现在Mapper包的扫描上。(mapper包扫描单独写在一个MapperConfig配置类中)

3.调试过程

按照2内容的分析就开始了调试,因为同事他也参与了其它的业务模块的编写,我参考他模块的mapper接口包名项目结构修改之后进行测试任然提示以上错误。然后以为是MapperConfig中配置的mapper的路径问题,修改路径依旧报错。为了排除其它因素我就将工程目录以及config文件中mapper路径与其保持一致,测试之后还是一样出现该问题。

4.忽略的细节

通用的模块是通过pom.xml进行依赖的引入,因此引入的模块应该是与我编写的模块同一层级但我的启动类是在模块内部的并没有涵盖通用的模块所以在通用模块中配置的MapperConfig配置根本不起作用,最后将启动类放置到同一层下才没有报错。大致如下图所示:

SpringBoot下使用tk.mapper遇到的小坑_第1张图片

以上内容就是本次遇到小坑处理过程,主要还是一些细节没注意像扫描MapperConfig配置类应该要注意启动类目录结构,引入通用模块的jar包依赖没有十分明确它与业务模块的目录结构之间的关系,因此花费了一些时间(文章中可能存在一些问题请适当参考,如有问题请多多指教)。

你可能感兴趣的:(springboot,通用mapper,java)