Java Mapstruct和Lombok升级会导致不同的初始化行为
我最近将Lombok从1.16.22升级到1.18.20,将Spring boot从2.1.13升级到2.2.13,将Mapstruct从1.2.0升级到1.4.2,并开始看到这种奇怪的行为Java Mapstruct和Lombok升级会导致不同的初始化行为,java,spring,spring-boot,lombok,mapstruct,Java,Spring,Spring Boot,Lombok,Mapstruct,我最近将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<>(
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Basket {
...
private List<Discount> discounts = new ArrayList<>();
...
public Basket(UUID id) {
this.id = id;
}
@Setter
@诺尔格构装师
@AllArgsConstructor
@建筑商
公共类篮子{
...
私有列表折扣=新的ArrayList();
...
公共篮子(UUID id){
this.id=id;
}
在升级之前,当调用单参数构造函数时,“折扣”将用一个空的ArrayList初始化初始值为null。我正在尝试缩小升级范围或导致此行为更改的原因,但不知道从何处开始。调用单参数构造函数时,我既不使用映射器逻辑也不使用生成的构造函数。是否有人遇到过类似问题?是的,在尝试使用在使用mapstruct和lombok时,我们遇到了mapstruct无法使用.java文件创建映射的问题 这是由于lombok@Builder注释造成的。lombok还在编译时生成这些方法、构造函数和构建器,mapstruct没有找到它。
我的两分钱就是用自己的first和debug替换lombok annotation impl进行调试。MapStruct通过生成
.java
文件来工作。你可以检查它们,看看它们是否在显式地设置这些值。这似乎很奇怪。你是否尝试删除该类?尝试放置@Builder.Default
或折扣
。