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

  目录

  问题现象

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

  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容器中;

  总结:

  解决方法

  由于我这里只是忘记添加@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对象时,能提供一个实例对象以供初始化:

  总结

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

  您可能感兴趣的文章: