同时使用lombok和mapstruct报“No property named “xxx“ exists in source parameter(s).”

文章讲述了在项目中同时使用Lombok和MapStruct时遇到的属性不存在错误,原因是MapStruct的注解处理器先于Lombok执行。解决方案是调整Maven编译插件中的注解处理器路径,确保Lombok先处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在某项目同时引入了lombok和mapstruct。当某个类同时使用lombok和mapstruct时,会出现No property named “xxx” exists in source parameter(s)错误。后面在网上找到了这篇《同时使用lombok和mapstruct报“No property named “xxx” exists in source parameter(s).”》,完美解释了错误原因:

lombok和mapstruct都是在编译期通过注解处理器生成对应代码的,如果mapstruct的注解处理器比lombok的更早被执行,则POJO的成员变量的getter和setter方法都还没有被生成,此时就会报某某属性不存在的错误。

简而言之,就是mapstruct要比lombok更早执行,否则使用mapstruct时会找不到用lombok修饰的类的属性。

我按此文的第二种方法解决了:将lombok和mapstruct-processor在maven-compiler-plugin的annotationProcessorPaths(注解处理器路径)中按上下顺序进行声明,这样lombok就会比mapstruct-processor更优先处理了,如下:

<build>
    <plugins>
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_23204557

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值