解决 @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 }