2026/2/10 14:33:38
网站建设
项目流程
天津网站网站建设,天津谁做网站,wordpress free template,wordpress 极简 模板文章目录 前言一、Lombok的一些常用注解二、Builder 构造 方法问题2.1 Builder 生成私有的构造方法#xff1a;2.2 处理方式#xff1a; 总结 前言
本文记录在使用#xff1a;LombokBuilder 时 #xff0c;发送Post 请求#xff0c;后端在接收参数时报 无法找到 构造方法…文章目录前言一、Lombok的一些常用注解二、Builder 构造 方法问题2.1 Builder 生成私有的构造方法2.2 处理方式总结前言本文记录在使用LombokBuilder 时 发送Post 请求后端在接收参数时报 无法找到 构造方法的错误所以记录LombokBuilder 的一些用法 。一、Lombok的一些常用注解注解功能使用场景Data组合注解包含 GetterSetterToStringEqualsAndHashCodeRequiredArgsConstructor普通业务 DTO/POJO 类Getter/Setter为所有非静态字段生成 getter/setter 方法final 字段仅生成 getter只需部分 getter/setter 的类NoArgsConstructor生成无参构造方法需要 Jackson 反序列化、Spring 实例化的类AllArgsConstructor生成包含所有字段的全参构造方法需要批量初始化所有字段的场景Builder生成建造者模式builder() 链式赋值 build()多字段初始化、可选参数较多的场景Slf4j生成私有静态日志对象 private static final Logger log LoggerFactory.getLogger(类名.class);所有需要打印日志的类Controller/Service二、Builder 构造 方法问题一个类如果明确声明构造方法在编译时jdk 会为其生成一个默认的无参构造方法但是如果显示声明了则不会在被jdk 生成无参的构造方法 Builder 会为改类默认生成一个私有的构造方法全参数的如果此时类中如果没有明确声明 public 作用域的构造方法jackson 在序列化时因为访问不到有效的构造方法进而报错即使Builder 生成了但是其为私有的构造方法 jackson序列化时无法访问到2.1 Builder 生成私有的构造方法代码如下示例DataBuilderAccessors(chaintrue)publicclassStudentDtoimplementsSerializable{privateStringstudentId;privateStringstudentName;privateIntegerstudentAge;privateStringstudentSex;}对应class 构造方法GeneratedStudentDto(finalStringstudentId,finalStringstudentName,finalIntegerstudentAge,finalStringstudentSex){this.studentIdstudentId;this.studentNamestudentName;this.studentAgestudentAge;this.studentSexstudentSex;}此时发送post 请求报错提示2.2 处理方式通过 AllArgsConstructor 和 NoArgsConstructor 来声明生成全部参数的构造方法和生成无参的构造方法代码如下示例DataBuilderAllArgsConstructorNoArgsConstructorAccessors(chaintrue)publicclassStudentDtoimplementsSerializable{privateStringstudentId;privateStringstudentName;privateIntegerstudentAge;privateStringstudentSex;}对应生成的classGeneratedpublicStudentDto(finalStringstudentId,finalStringstudentName,finalIntegerstudentAge,finalStringstudentSex){this.studentIdstudentId;this.studentNamestudentName;this.studentAgestudentAge;this.studentSexstudentSex;}GeneratedpublicStudentDto(){}总结Builder 只会生成全部参数但是是私有的构造方法导致web 请求对入参进行序列化时 无法访问到有效的构造方法从而报错此时可以使用AllArgsConstructor 和NoArgsConstructor 为其生成有参和无参的构造方法。