一、背景描述
springboot 2.1.5 + mapstruct 1.3.0.Final + maven管理工具
接手一个项目,根据需求需要对其接口进行修改,对于两个实体类字段赋值,项目中使用 mapstruct 框架自动映射对应字段。对于其中一个实体类中,新增加了两个字段,重启项目使用 swagger 调用测试,发现新增加的字段映射失败,没有把新增的两个字段的值赋值过去,而其他字段则可以正常赋值。
二、问题原因
对于这个现象,有两个原因,以下详细说明一下:
原因一:映射的字段不一致
首先怀疑两个字段需要映射的字段写的不一致,检查完之后发现需要映射的两个字段与被映射的字段一模一样,最终排除掉此原因。
原因2:编译问题
使用 mapstruct 框架,对于需要映射的实体类,会先自动编译好之后存入 target 目录,而 idea 开发工具的重启并没有清空 target 目录下已经编译好的文件,所以导致新增加的两个字段即使重启项目也没有自动映射。
重启后的项目 target 目录下,还是之前编译好的文件,因此新增加的两个字段没有自动映射。
三、解决方案
使用 maven 自带插件,对项目 clean 一下,然后再重新启动,即可解决此问题。
完结!