我最近将Lombok从1.16.22升级到1.18.20,将Spring boot从2.1.13升级到2.2.13,将Mapstruct从1.2.0升级到1.4.2,并开始看到这种奇怪的行为。
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Basket {
...
private List<Discount> discounts = new ArrayList<>();
...
public Basket(UUID id) {
this.id = id;
}
在升级之前;折扣";将在调用单参数构造函数时使用空的ArrayList进行初始化。然而,现在我看到了";折扣";初始值为null。我正试图缩小升级或导致行为改变的范围,但我不知道从哪里开始。当我调用单参数构造函数时,我既不使用映射器逻辑,也不使用生成的构造函数。有人经历过类似的问题吗?
是的,在尝试使用mapstruct和lombok时遇到了类似的问题,我们遇到了mapstruct无法使用.java文件创建映射的问题。
这是由于lombok@Builder注释。Lombok还在编译时生成这些方法、构造函数和构建器,但mapstruct没有找到它。我的两分钱是通过将lombok注释impl替换为您自己的first-and-debug来进行调试。