解决springboot项目启动报错Field xxxMapper in com...xxxController required

 更新时间:2023年12月07日 15:50:32   作者:Stephen·You  
这篇文章主要介绍了解决springboot项目启动报错Field xxxMapper in com...xxxContr问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题现象

今天在启动项目的时候发现了一个报错,如下:

Field xxxMapper in com...xxxController required a bean of type ‘com...xxxMapper‘

问题分析

根据报错信息可以知道:

错误原因是:xxxMapper不存在与Spring容器中'';

所以现在的问题就是把xxxMapper加入到bean容器中即可.

首先查看Controller层,查看是否有以下代码:

@Autowired
private JkMessageMapper jkMessageMapper;

上面的代码,就是用于在实现了JkMessageMapper注入到bean容器后可以自动创建该类对象,并交由bean容器管理;

通过查看xxxMapper接口,可以发现问题:

因为Mapper接口类没有添加注解,导致spring容器并没有处理到这个接口类。

注意:

我的项目中是没有dao层实现类的,因为添加@Mapper注解后spring会自动将dao层实现类创建并注入bean容器中

总结:

  • 如果用到了Controller(控制层),需要在Controller类上添加@Controller注解;
  • 如果用到了Service(业务层)的话,需要在Service接口类上添加@Service注解
  • 如果用到了ServiceImpl(业务层实现类),则需要在实现类上添加@Component注解;
  • 如果用到了MapperImpl/DaoImpl(dao层实现类),则需要在实现类上添加@Repository注解,但如果在dao层接口类上添加了@Mapper注解的话,其实可以不需要dao层实现类了。

解决方法

由于我这里只是忘记添加@Mapper注解了,其他配置都没有问题,所以只需要

在Mapper接口类(dao层)上添加@Mapper注解:

启动成功:

拓展

从上门的分析可知,文章中提到的报错是因为bean对象注入失败导致的,那下面再说一下其他可能会导致该报错的原因: 

1、dao层xml文件(mybatis映射文件)中 namespace属性配置的路径和关联的dao层(接口类)文件的所在目录路径不一致。

(提示:在IDEA默认情况下,选择一个dao层xml文件(mybatis映射文件),可以通过按住ctrl键再点击映射的dao层(接口类)快速定位到所映射的dao层类,如果定位不到,则配置的路径有问题)。

2、没有设置dao层包路径识别注解(@MapperScan(dao层所在的包路径))

@MapperScan 注解可以加在数据源配置类上,或者是启动类上都可以。

作用是让spring容器在初始化时,去加载该注解所配置的包路径下的所有dao层类,生成对应的bean对象。 

3、没有设置dao层xml文件(mybatis映射文件)的路径。

假如项目中有数据源配置类,那最好是配置一下dao层xml文件的路径:

而如果没有数据源配置类,则需要在项目的 application配置文件中配置dao层xml文件的路径:

mybatis配置:

mybatis-plus配置:

当然还有第3种配置方法,就是通过mybatis-config.xml配置文件也可以:

然后还需要在application配置文件中添加mybatis配置文件的路径:

强烈建议不要第3种方式,来配置dao层xml文件的路径,因为你需要一个个去添加dao层xml文件(mybatis映射文件)的路径到mybatis-config.xml文件中的mappers标签中,太过麻烦和繁琐了!

初始化 SqlSessionFactory 数据源工厂对象的时候,加载该路径,作用是在创建dao层类的bean对象时,能提供一个实例对象以供初始化

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中二叉树数据结构的实现示例

    Java中二叉树数据结构的实现示例

    这篇文章主要介绍了Java中二叉树数据结构的实现示例,包括前中后序遍历和求二叉树深度的方法,需要的朋友可以参考下
    2015-08-08
  • SpringBoot获取maven打包时间的两种方式

    SpringBoot获取maven打包时间的两种方式

    这篇文章主要介绍了SpringBoot获取maven打包时间的两种方式,文章通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-05-05
  • Java缩略图生成库之Thumbnailator应用说明

    Java缩略图生成库之Thumbnailator应用说明

    Thumbnailator是一个为Java界面更流畅的缩略图生成库,从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,使用起来非常方便,需要的朋友可以了解下
    2012-12-12
  • java数据结构和算法中数组的简单入门

    java数据结构和算法中数组的简单入门

    在本文里小编给大家整理了关于java数据结构和算法中数组的简单入门知识点整理,需要的朋友们学习下。
    2019-06-06
  • 打包SpringBoot程序为exe的案例教程

    打包SpringBoot程序为exe的案例教程

    这篇文章主要介绍了打包SpringBoot程序为exe的案例教程,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • springboot @Controller和@RestController的区别及应用详解

    springboot @Controller和@RestController的区别及应用详解

    这篇文章主要介绍了springboot @Controller和@RestController的区别及应用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot和MybatisPlus实现通用Controller示例

    SpringBoot和MybatisPlus实现通用Controller示例

    本文主要介绍了SpringBoot和MybatisPlus实现通用Controller示例,只需创建实体类和mapper接口,就可以实现单表的增删改查操作,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • java按照模板导出pdf或word文件详细代码

    java按照模板导出pdf或word文件详细代码

    有时候业务中我们需要使用pdf模板生成一份pdf文件,下面这篇文章主要给大家介绍了关于java按照模板导出pdf或word文件的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-11-11
  • SpringBoot整合MQTT小结汇总

    SpringBoot整合MQTT小结汇总

    MQTT 客户端是运行 MQTT 库并通过网络连接到 MQTT 代理的任何设备,是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 于 1999 年发明,对SpringBoot整合MQTT相关知识感兴趣的朋友一起看看吧
    2022-01-01
  • Java8的Optional如何干掉空指针(示例详解)

    Java8的Optional如何干掉空指针(示例详解)

    这篇文章主要介绍了Java8的Optional如何干掉空指针,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论