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

如何在MapStruct中完全禁用自动映射?

解决MapStruct禁用自动映射、强制手动定义所有映射的问题

核心配置调整

你现有配置仅开启了未映射字段的错误检查,但并未禁用MapStruct的同名字段自动映射行为。要完全禁用自动映射,需在@Mapper注解中添加mappingControl参数,配合unmappedTargetPolicy实现强制手动映射:

@Mapper(
    componentModel = "spring",
    unmappedTargetPolicy = ReportingPolicy.ERROR,
    mappingControl = MappingControl.DISABLE_AUTOMATIC_MAPPING
)

配置说明

  • mappingControl = MappingControl.DISABLE_AUTOMATIC_MAPPING:彻底关闭MapStruct的自动映射逻辑,哪怕源和目标字段同名,也不会自动建立映射,必须通过@Mapping注解手动定义每一个映射关系。
  • unmappedTargetPolicy = ReportingPolicy.ERROR:如果目标对象存在未被手动映射的字段,编译阶段直接抛出错误,确保所有字段都被显式定义。

额外注意事项

  • 确保使用的MapStruct版本在1.5.0.Final及以上,MappingControl是该版本才引入的特性。
  • 若使用旧版本MapStruct,无法通过MappingControl实现,可通过以下方式间接达成:
    • 保持unmappedTargetPolicy = ReportingPolicy.ERROR
    • 对每一个同名字段,显式添加@Mapping(source = "fieldName", target = "fieldName"),确保没有遗漏任何字段——编译时若存在未映射字段会直接报错,变相实现强制手动映射。

内容的提问来源于stack exchange,提问作者Page not found

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:29:51