解决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中@Accessors注解的具体使用

    Java中@Accessors注解的具体使用

    @Accessors是Lombok提供的注解之一,用于自动生成getter和setter方法,本文主要介绍了@Accessors注解的常用属性,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Mybatis批量插入的三种实现方法

    Mybatis批量插入的三种实现方法

    在日常开发中,如果要操作数据库的话,或多或少都会遇到批量数据的处理,本文主要介绍了Mybatis批量插入的三种实现方法,感兴趣的可以了解一下
    2023-10-10
  • Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • 详解Spring Boot加载properties和yml配置文件

    详解Spring Boot加载properties和yml配置文件

    本篇文章主要介绍了详解Spring Boot加载properties和yml配置文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Javaweb 500 服务器内部错误的解决

    Javaweb 500 服务器内部错误的解决

    这篇文章主要介绍了Javaweb 500 服务器内部错误的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot项目鉴权的4种方式小结

    SpringBoot项目鉴权的4种方式小结

    本文主要介绍了SpringBoot项目鉴权的4种方式小结,包括传统AOP、拦截器、参数解析器和过滤器,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Java使用IOC控制反转的三种设计模式详解

    Java使用IOC控制反转的三种设计模式详解

    这篇文章主要为大家详细介绍了Java使用IOC控制反转的三种设计模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • mybatis-plus自带QueryWrapper自定义sql实现复杂查询实例详解

    mybatis-plus自带QueryWrapper自定义sql实现复杂查询实例详解

    MyBatis-Plus是一个MyBatis(opens new window)的增强工具,在 MyBatis的基础上只做增强不做改变,MyBatis可以无损升级为MyBatis-Plus,这篇文章主要给大家介绍了关于mybatis-plus自带QueryWrapper自定义sql实现复杂查询的相关资料,需要的朋友可以参考下
    2022-10-10
  • java编程Reference核心原理示例源码分析

    java编程Reference核心原理示例源码分析

    这篇文章主要为大家介绍了java编程Reference的核心原理以及示例源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-01-01
  • Java中Optional类及orElse方法详解

    Java中Optional类及orElse方法详解

    这篇文章主要为大家介绍了Java中Optional类及orElse()方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论