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

Spring Boot中MapStruct Mapper Bean缺失及映射失效问题求助

Spring Boot 中 MapStruct 与 Lombok 集成问题解决

问题现象

  • 为Capteur类编写MapStruct映射器,已通过@Mapper(componentModel = "spring")指定Spring组件模型,但项目启动时抛出NoSuchBeanDefinitionException,提示找不到CapteurMapper类型的Bean
  • 执行mvn clean install后项目可临时正常运行,但执行Maven更新(Reload Maven Project)后问题再次出现
  • 后续触发连锁问题:映射器无法正确复制对象属性、Jackson序列化CapteurDto失败,调整Lombok编译相关配置后仍无法解决

根本原因

MapStruct与Lombok在编译阶段的字节码生成逻辑存在冲突,缺少专门的绑定依赖来协调二者的执行顺序,导致MapStruct无法识别Lombok自动生成的getter/setter方法,进而无法生成正确的映射实现类,Spring容器也就无法扫描到对应的Bean实例。

解决方案

在项目的Maven依赖中添加lombok-mapstruct-binding依赖,该依赖专门用于协调MapStruct与Lombok的编译顺序:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-mapstruct-binding</artifactId>
    <version>0.2.0</version>
    <scope>provided</scope>
</dependency>

同时需确保Maven编译插件中正确配置注解处理器路径,保证MapStruct、Lombok及绑定依赖的处理器能按顺序执行:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source> <!-- 根据项目使用的JDK版本调整 -->
                <target>11</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.5.3.Final</version> <!-- 替换为你的MapStruct版本 -->
                    </path>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.24</version> <!-- 替换为你的Lombok版本 -->
                    </path>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-mapstruct-binding</artifactId>
                        <version>0.2.0</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

验证操作

  1. 执行mvn clean install重新编译整个项目
  2. 启动Spring Boot应用,检查是否仍存在CapteurMapper Bean找不到的错误
  3. 编写测试用例验证映射器的属性复制功能,以及CapteurDto的Jackson序列化是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:15:40