解决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对象时,能提供一个实例对象以供初始化

总结

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

相关文章

  • jvm字符串常量池在什么内存区域问题解析

    jvm字符串常量池在什么内存区域问题解析

    这篇文章主要介绍了jvm字符串常量池在什么内存区域的问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • resty的缓存技术设计及使用

    resty的缓存技术设计及使用

    这篇文章主要为大家介绍了resty缓存技术的设计及使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java设计模式之浅谈模板方法模式

    Java设计模式之浅谈模板方法模式

    今天给大家带来的是关于Java设计模式的相关知识,文章围绕着Java模板方法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • spring boot启动时加载外部配置文件的方法

    spring boot启动时加载外部配置文件的方法

    这篇文章主要给大家介绍了关于spring boot启动时加载外部配置文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • javaweb图书商城设计之用户模块(1)

    javaweb图书商城设计之用户模块(1)

    这篇文章主要介绍了javaweb图书商城设计之用户模块的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 完美解决java读取大文件内存溢出的问题

    完美解决java读取大文件内存溢出的问题

    下面小编就为大家带来一篇完美解决java读取大文件内存溢出的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java使用Thread创建多线程并启动操作示例

    Java使用Thread创建多线程并启动操作示例

    这篇文章主要介绍了Java使用Thread创建多线程并启动操作,结合实例形式分析了Java基于Thread类的多线程定义与启动简单操作技巧,需要的朋友可以参考下
    2018-06-06
  • java设计模式学习之代理模式

    java设计模式学习之代理模式

    这篇文章主要为大家详细介绍了java设计模式学习之代理模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 这一次搞懂SpringMVC原理说明

    这一次搞懂SpringMVC原理说明

    这篇文章主要介绍了这一次搞懂SpringMVC原理说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • java调用openoffice将office系列文档转换为PDF的示例方法

    java调用openoffice将office系列文档转换为PDF的示例方法

    本篇文章主要介绍了java使用openoffice将office系列文档转换为PDF的示例方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-11-11

最新评论