You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring项目注入MapStruct的Mapper时提示找不到Bean该如何解决

问题原因排查

首先明确:未安装MapStruct IDE插件不会导致该问题,插件仅提供代码跳转、语法校验等辅助功能,不参与Mapper实现类的生成逻辑,你的问题核心是MapStruct注解处理器未正常生成带Spring注解的Mapper实现类,或是生成的实现类未被Spring扫描到。

解决方案

按以下顺序逐一排查修复:

  • 修正Gradle配置适配Eclipse

    Eclipse的Gradle插件默认不会自动识别annotationProcessor生成的源码目录,需要在build.gradle中补充eclipse配置:

    plugins {
        // 保留原有插件,新增以下行
        id 'eclipse'
    }
    // 新增以下配置块
    eclipse {
        jdt {
            apt {
                genSrcDir = file('build/generated/sources/annotationProcessor/java/main')
                aptEnabled = true
            }
        }
    }
    

    配置完成后在项目根目录执行命令gradle clean eclipse,再刷新IDE中的项目。

  • 确认包扫描范围

    检查SpringBoot启动类的位置,确保@SpringBootApplication注解能扫描到Mapper所在的com.api.gestioncartera.Services.Mappers包:

    • 如果启动类在com.api.gestioncartera根包下无需额外配置
    • 如果启动类在子包中,需要在启动类上补充注解:
      @SpringBootApplication(scanBasePackages = "com.api.gestioncartera")
      
  • 清理缓存重新编译

    1. 执行gradle clean build命令全量编译项目
    2. 检查build/generated/sources/annotationProcessor/java/main目录下是否生成了CollectionCompanyMapperImpl.class文件
    3. 若文件已生成但IDE未识别,手动将该目录加入项目源码路径:右键项目 -> Build Path -> Configure Build Path -> Source -> Add Folder,选中上述目录后保存。
  • 冗余注解移除(可选)

    你在Mapper接口上同时加了@Mapper(componentModel = "spring")和@Component,其中@Component是冗余的,MapStruct生成的实现类会自动带上Spring的组件注解,不会影响运行但可以移除避免混淆。

内容的提问来源于stack exchange,提问作者DavidCediel12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:06:01