解决 @Data 和 @Builder 的使用冲突问题

一、问题现象

当我们的实体类中加上了@Builde 和 @Data 这两个注解之后,尽管⽣成了GET/SET⽅法,但是⽆参构造⽅法没有了,这会引起很多问题,因为很多框架都会调⽤⽆参构造去创建对象。例如 new Student  就会报错报异常

1 @Data
2 @Builder
3 public class Student {
4     private Integer id;
5 
6     private String name;
7 
8     private String sex;
9 }

 

 二、解决方法

一、手动添加无参构造,使用 @Tolerate 注解

让Lombok在⽣成类的时候,对指定的构造函数不感知

 1 @Data
 2 @Builder
 3 public class Student {
 4     private Integer id;
 5 
 6     private String name;
 7 
 8     private String sex;
 9     
10     @Tolerate
11     public Student() {
12     }
13 }

二、使用两个注解 @AllArgsConstructor、@NoArgsConstructor

 直接使用有参构造器+无参构造器的方式,@AllArgsConstructor 来构建有参构造器,@NoArgsConstructor来构建无参构造器

 1 @Data
 2 @Builder
 3 @AllArgsConstructor
 4 @NoArgsConstructor
 5 public class Student {
 6     private Integer id;
 7 
 8     private String name;
 9 
10     private String sex;
11 }

 

posted @ 2022-07-22 22:12  那时·此刻  阅读(508)  评论(0编辑  收藏  举报
/* 看板娘 */