解决启动SpringBoot项目报错:Unsatisfied dependency expressed through field ‘baseMapper‘.....问题

这篇具有很好参考价值的文章主要介绍了解决启动SpringBoot项目报错:Unsatisfied dependency expressed through field ‘baseMapper‘.....问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unsatisfied dependency expressed through field 'baseMapper',XXXMapper包扫描不到

  • 当你看到这样的报错,你会怎么解决呢:

Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.memory.memoryiconbackend.mapper.WallpaperMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

  • 这个报错信息大致意思是,未扫描到你的XXXMapper包,项目启动失败
  • 这个问题可谓最常见了,刚刚我就又被这个问题恶心到了,网上查了半天,感觉他们都是一知半解
  • 那么我是怎么解决这个问题的呢?思路如下:

XXXMapper.xml配置错误

  • 检查resource下的XXXMapper.xml配置,检查实体类扫描和mapper扫描路径是否正确:

解决启动SpringBoot项目报错:Unsatisfied dependency expressed through field ‘baseMapper‘.....问题,SpringBoot项目,MybatisPlus,mybatis

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.memory.memoryiconbackend.mapper.WallpaperMapper">
​
    <resultMap id="BaseResultMap" type="com.memory.memoryiconbackend.model.Wallpaper">
            <result property="id" column="id" jdbcType="VARCHAR"/>
            <result property="name" column="name" jdbcType="VARCHAR"/>
            <result property="url" column="url" jdbcType="VARCHAR"/>
            <result property="type" column="type" jdbcType="VARCHAR"/>
            <result property="tags" column="tags" jdbcType="VARCHAR"/>
            <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
            <result property="updateTime" column="update_time" jdbcType="VARCHAR"/>
            <result property="isDelete" column="is_delete" jdbcType="VARCHAR"/>
            <result property="userId" column="user_id" jdbcType="VARCHAR"/>
    </resultMap>
​
    <sql id="Base_Column_List">
        id,name,url,
        type,tags,create_time,
        update_time,is_delete,user_id
    </sql>
</mapper>
  • 确保XXXMapper包的扫描路径正确后,再继续排查:

    XXXMapper上添加@Mapper注解

    • 检查XXXMapper上是否添加了@Mapper注解:

    解决启动SpringBoot项目报错:Unsatisfied dependency expressed through field ‘baseMapper‘.....问题,SpringBoot项目,MybatisPlus,mybatis

    @Mapper
    public interface WallpaperMapper extends BaseMapper<Wallpaper> {
    ​
    }
    • 如果这两部还没有解决你的问题,请一定继续往下看:

    开启@MapperScan注解

    • @MapperScan注解是干嘛的呢?它是用来在项目启动后,扫描你的XXXMapper所在路径,用法如下:
    @SpringBootApplication
    @MapperScan("com.memory.memoryiconbackend.mapper.WallpaperMapper")
    public class MemoryIconBackendApplication {
        public static void main(String[] args) {
            SpringApplication.run(MemoryIconBackendApplication.class, args);
        }
    }
    • 那这个注解跟上面提到的@Mapper注解,功能不是一样的吗?都是将XXXMapper标注为一个Bean,交给Spring管理
    • 没错,这两个注解的作用是可以说是一摸一样的,无非就是写的位置不一样
    • 正是因为这两个注解作用是一样的,所以在开发过程中,这两个注解写一个就行,而且只能写一个,否则会报错
    • 网上总会有蠢蛋,说在XXXMapper上,添加了@Mapper注解之后,一定不要忘了在启动类上添加@MapperScan注解
    • 这种方法肯定解决不了问题,是大错特错的
    • 所以,如果你已经在XXXMapper上添加了@Mapper注解,一定记得删除启动类上的@MapperScan注解
    • 如果到这里,你已经按照上面的方法解决了问题,成功启动了项目,恭喜你;如果仍旧报错,请继续往下看:

    MybatisPlusConfig配置

    • 我们在项目中,导入了MybatisPlus依赖之后,总会写一个MybatisPlusConfig的分页配置:
    /**
     * mybatis-plus 分页配置类
     */
    @Configuration
    @MapperScan("com.memory.memoryiconbackend.mapper.WallpaperMapper")
    public class MybatisPlusConfig {
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }
    }
    • 如果你的问题没有解决,一定是因为在这个配置类上边,写上了@MapperScan注解

    解决启动SpringBoot项目报错:Unsatisfied dependency expressed through field ‘baseMapper‘.....问题,SpringBoot项目,MybatisPlus,mybatis文章来源地址https://www.toymoban.com/news/detail-718524.html

    • 而这个注解的作用,跟启动类上的@MapperScan注解的作用是一模一样的,删除它就好了

    总结

    • 如果你已经在XXXMapper上添加了@Mapper注解,请把启动类和MybatisPlusConfig配置类上的@MapperScan注解删除
    • 如果你已经在启动类和MybatisPlusConfig配置类上添加了@MapperScan注解,请把XXXMapper上的@Mapper注解删除
    • 希望这篇文章对你有帮助,感谢您的支持!😁

到了这里,关于解决启动SpringBoot项目报错:Unsatisfied dependency expressed through field ‘baseMapper‘.....问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA项目启动报错:Failed to execute goal on project xxx: Could not resolve dependencies for project

    [ERROR] Failed to execute goal on project xxx: Could not resolve dependencies for project Failed to collect dependencies at xxx .xxx-service:jar:dev: Failed to read artifact descriptor for xxxx/maven-snapshots/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of nexus-snaps

    2024年02月03日
    浏览(61)
  • VS2022 IIS Express运行报错:Could not load file or assembly ‘xxxx‘ or one of its dependencies.

    问题描述:VS2017,VS2019默认使用32位的IIS Express运行应用程序。但VS2022默认启用64位的IIS Express。如果项目中有dll必须运行在32位下,就会造成标题所示的错误。 解决办法:VS2022中工具=》选项=》项目与方案=》Web项目下将“使用64位的IIS Express”选项勾掉就可以了。  

    2024年02月13日
    浏览(58)
  • SpringBoot中循环依赖报错解决---The dependencies of some of the beans in the application context form a cycle

    循环依赖: 循环依赖就是循环引用,也就是两个或则两个以上的bean互相依赖对方,形成闭环。比如A类中有B属性,B类中有A属性 一、报错信息 The dependencies of some of the beans in the application context form a cycle:  二、解决方案 1、修改配置文件 根据Action中的提示 不鼓励依赖循环引用

    2024年02月11日
    浏览(98)
  • SpringBoot项目启动之后自动关闭解决办法

    我们在新建SpringBoot项目的时候,在运行的时候,一会就自动关闭了,这个主要是我们在新建的时候没有选择好依赖包,相当于没有内置的Tomcat,我们运行的Main函数其实就是一个普通的Main函数,所以运行完毕了之后就关闭了,遇到这个问题我们应该如何解决? 首先,检查我们

    2024年02月04日
    浏览(44)
  • SpringBoot 项目整合启动报错:javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/ser

    报错信息如下:java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/ser 历经此坑的心路历程,就是一个简单的服务项目整合到web项目中,期间并没有在意jar包依赖的问题,此问题只是简单登录跳转的问题,没有太在意,除了访问登录页的时候报错外,其

    2024年02月11日
    浏览(35)
  • 解决springboot启动时minio报错的问题(注入bean时报错)

    最近在将原有的单体springboot项目搬迁至springcloud的时候出现了启动项目minio报错的问题。 Error creating bean with name ‘minioClient’ defined in class path resource [com/ruoyi/clockin_v2/config/MinioConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationExcept

    2024年02月15日
    浏览(32)
  • 解决SpringBoot启动报错 :o.s.b.d.LoggingFailureAnalysisReporter

    目录 参考信息来源:     报错代码、信息如下: 报错原因 解决办法一般分两种情况 第一种情况:项目不需要连接数据库,启动时报错 第二种情况:项目需要连接数据库,启动时报错 解决方案①:在配置文件中没有添加数据库配置信息,则需要编写相应的配置 解决方案②

    2024年02月07日
    浏览(43)
  • springboot项目启动报错ERROR org.springframework.boot.SpringApplication - Application run failed

    错误内容: ERROR org.springframework.boot.SpringApplication - Application run failed org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1 解决方法: 原因,yml的中文注释与设定的encoding格式起了冲突 先把application.yml的内容全部保存下来,删掉文件 左上角setting-editor-f

    2024年02月04日
    浏览(40)
  • IDEA新建SpringBoot项目时启动编译报错:Error:java: 无效的源发行版: 17

    出现这种错误的原因可能是: 本机默认使用(编译)的jdk与该项目所使用的jdk版本不同。 jdk版本不适用于这个Idea,很典型的一个例子就是使用的Idea是2020的,而你用到的jdk是17,jdk17是2021年推出的,所以你只能去安装新版本的idea。 有时候SpringBoot版本太高不支持java8, 用java

    2024年02月10日
    浏览(39)
  • 前端接收老项目启动时报错These dependencies were not found

            当我们下载好老项目,npm install下载node_modules后,用npm run serve启动时,就会发现报错,具体错误如下图所示。  那么这是什么原因呢? 主要就是你的插件版本问题,我这个就是 echarts版本太高了, echarts是5的版本。 在网上也找了很多,但是感觉都讲不清楚,我也

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包