1、@Builder的实现方式是会对标注这个注解的类的所有成员变量,当他和@Data注解同时使用的时候,会导致无参的构造方法丢失
所以在使用@Builder构建的时候如果不显式的对某变量赋值的话默认就是null,因为这个变量此时是在Builder类里的,通过调用build()方法生成具体该类则是通过私有构造函数来实例化,默认是全参数的构造函数。
如果只加一个@Builder注解的话,效果等同于@Builder+@AllArgsConstructor两个注解
所以一般情况下@Builder 和@AllArgsConstructor,@NoArgsConstructor这三注解要配合使用。
或者手写无参构造方法,并添加@Tolerate注解
如果不加这两个注解,最直接的影响就是会出现数据库查询结果映射出错的问题
2、@Builder注解,字段默认值失效的问题,是由于如果不显式的对某变量赋值的话默认就是null,需要在有默认值的字段上面添加@Builder.Default注解