news 2026/6/10 14:42:10

fixedbug:Lombok@Builder 构造 方法生成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
fixedbug:Lombok@Builder 构造 方法生成

文章目录

  • 前言
  • 一、Lombok的一些常用注解
  • 二、@Builder 构造 方法问题
    • 2.1 @Builder 生成私有的构造方法:
    • 2.2 处理方式:
  • 总结

前言

本文记录在使用:Lombok@Builder 时 ,发送Post 请求,后端在接收参数时报 无法找到 构造方法的错误,所以记录Lombok@Builder 的一些用法 。


一、Lombok的一些常用注解

注解功能使用场景
@Data组合注解:包含 @Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor普通业务 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 生成私有的构造方法:

代码如下(示例):

@Data@Builder@Accessors(chain=true)publicclassStudentDtoimplementsSerializable{privateStringstudentId;privateStringstudentName;privateIntegerstudentAge;privateStringstudentSex;}

对应class 构造方法:

@GeneratedStudentDto(finalStringstudentId,finalStringstudentName,finalIntegerstudentAge,finalStringstudentSex){this.studentId=studentId;this.studentName=studentName;this.studentAge=studentAge;this.studentSex=studentSex;}

此时发送post 请求报错提示:

2.2 处理方式:

通过 @AllArgsConstructor 和 @NoArgsConstructor 来声明生成全部参数的构造方法,和生成无参的构造方法;

代码如下(示例):

@Data@Builder@AllArgsConstructor@NoArgsConstructor@Accessors(chain=true)publicclassStudentDtoimplementsSerializable{privateStringstudentId;privateStringstudentName;privateIntegerstudentAge;privateStringstudentSex;}

对应生成的class:

@GeneratedpublicStudentDto(finalStringstudentId,finalStringstudentName,finalIntegerstudentAge,finalStringstudentSex){this.studentId=studentId;this.studentName=studentName;this.studentAge=studentAge;this.studentSex=studentSex;}@GeneratedpublicStudentDto(){}

总结

@Builder 只会生成全部参数但是是私有的构造方法,导致web 请求对入参进行序列化时 无法访问到有效的构造方法从而报错,此时可以使用@AllArgsConstructor 和@NoArgsConstructor 为其生成有参和无参的构造方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:45:23

【AI大模型开发】-创建RAG问答实战(LangChain+DeepSeek+Faiss)

1. 项目简介 ChatPDF-Faiss 是一个基于 FAISS 向量数据库的 PDF 文档智能问答系统,能够从 PDF 文档中提取信息并回答用户的问题。该系统利用了阿里云 DashScope API 提供的文本嵌入和大语言模型能力,实现了对 PDF 文档的高效检索和智能问答。 1.1 核心功…

作者头像 李华
网站建设 2026/6/10 6:41:22

基于Java+SpringBoot+SSM思政考核管理系统(源码+LW+调试文档+讲解等)/思政管理系统/考核管理系统/思想政治教育系统/思政工作管理系统/思政评估管理系统

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/6/10 2:52:28

未来JS架构:Realm隔离——从全局共享到独立环境的必然

绝大多数开发者都清楚:执行不受信任的JavaScript代码存在显著风险。然而,直到深入理解某一特性后我才意识到——过去我们往往是在进行缺乏根本性解决的修补,借助各种临时方案勉强维持系统运行。 你可能遇到过这样的场景:为执行第…

作者头像 李华
网站建设 2026/6/10 6:42:47

科研级 YOLOv8 改进实战:ODConv 动态卷积助力特征提取突破瓶颈

文章目录 科研级YOLOv8改进:ODConv动态卷积助力,让特征提取突破瓶颈的实战指南 一、为何ODConv是特征提取的革新之选? 二、ODConv与传统卷积的原理博弈 2.1 ODConv的动态提取智慧 2.2 传统卷积的局限 三、核心代码实现:从ODConv到动态特征提取 四、分步集成:让YOLOv8换上O…

作者头像 李华
网站建设 2026/6/10 7:11:35

pcacli.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/10 7:53:38

face_recognition`这个Python库,它是基于dlib实现的人脸检测/识别工具

你现在关注的是face_recognition这个Python库,它是基于dlib实现的人脸检测/识别工具,上手简单且功能实用。结合你之前安装dlib的背景,我会帮你把face_recognition的安装、核心用法和注意事项讲清楚,确保你能快速用起来。 一、先完…

作者头像 李华