Lombok 出现方便开发人员的开发,提高了开发效率,最近在开发项目的时候,发现了一个Lombok @Builder注解和@Data注解同时使用时的一个问题。
为了代码优雅,在构造POJO类的时候,采用链式的builder方式赋值。编译没有问题,但是在代码的运行中却出现了报错,无一例外都报字段映射错误的问题,经过验证发现
竟然是lombok@Data和@Builder一起用无法添加无参构造方法引起的,非常隐蔽。很多框架都是同反射等调用无参数构造方法来创建实例的,需要注意。单独使用@Data注解,编译后的类文件会生成无参数构造方法
解决方法为即为该POJO增加一个无参数的构造方法,并用@Tolerate修饰
正确写法如下:
@Builder
@Data
public class Dog {
private String name;
private Integer age;
private String nickName;
private String test;
@Tolerate
Dog() {}
}