Ab Version 1.16.16 können Sie den Standardwert angeben, indem Sie die Annotation  @ Builder.Default hinzufügen.
@Builder
public class Coupon {
    @Builder.Default
    private UUID id = UUID.randomUUID();
    private String name;
    private String description;
    private ZonedDateTime expireDate;
}
Spring Boot wurde übrigens in Version 1.5.3 importiert. Wenn Sie also eine frühere Version verwenden, müssen Sie die Version explizit angeben.
Lomboks @Builder ist eine Anmerkung, die automatisch eine Builder-Klasse für eine bestimmte Klasse generiert.
@Value
@Builder
public class Coupon {
    private UUID id;
    private String name;
    private String description;
    private ZonedDateTime expireDate;
}
Coupon coupon = Coupon.builder()
        .name("Überraschter Gutschein")
        .description("Überraschter Gutschein")
        .expireDate(ZonedDateTime.parse("2017-01-30T23:59:59+09:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME))
        .build();
Die Eigenschaft, für die im Builder-Aufruf kein Wert angegeben ist, ist jedoch "null". Wenn Sie versuchen, einen anderen Standardwert als null festzulegen, funktioniert dies nicht, selbst wenn Sie ihn wie folgt in die Zielklasse schreiben.
@Value
@Builder
public class Coupon {
    private UUID id = UUID.randomUUID(); //Gilt nicht
    private String name = "";            //Gilt nicht
    private String description;
    private ZonedDateTime expireDate;
}
Daher werde ich dieses Mal vorstellen, wie der Standardwert richtig eingestellt wird.
Um den Standardwert festzulegen, beschreiben Sie die Builder-Klasse mit der Namenskonvention "Zielklassenname + Builder", wie unten gezeigt. Der Rest wird durch Lombok gut ergänzt.
@Value
@Builder
public class Coupon {
    private UUID id;
    private String name;
    private String description;
    private ZonedDateTime expireDate;
    public static class CouponBuilder {
        private UUID id = UUID.randomUUID();
        private String name = "";
    }
}
Recommended Posts