SpringBoot之@Builder 注解

(1)@Builder 生成的构造器不是完美的,如果没有提供必须的参数,构造器可能会创建出不完整或者不合法的对象,导致代码报错。

@Builder 注解产生的 Builder 类的构造方法默认并不能限定必传参数。

(2)有时候将@Builder 和 @Data 搭配使用,以为是一个很好的搭配,导致生成的构造器是可变的,它允许使用 setter 方法修改构造器的状态。这违反了构造器模式的原则,构造器应该是不可变的,一旦创建就不能被修改。

如果非要使用 @Builder ,那么不要用 @Data ,要用 @Getter。

(3)@Builder 生成的构造器不适合用于短暂的对象,它会增加代码的复杂度和冗余。构造器模式更适合用于生命周期较长、有多种变体的对象。有些仅仅一两个属性的类也都要用 @Builder,有一些小题大做,直接用全参的构造方法都比这更简洁。

(4)@Builder 生成的构造器不能处理抽象类型的参数,它只能接受具体类型的对象。这限制了构造器的灵活性和扩展性,不能根据不同的需求创建不同风格的对象。

(5)继承关系时,子类需要使用 @SuperBuilder。对象继承后,子类的 Builder 因为构造函数的问题,使用不当大概率会报错,并且无法设置父类的属性,还需要使用 @SuperBuilder 来解决问题。

(6)设置默认值需要使用 @Builder.Default。很容易因为对此不了解,导致默认值不符合预期导致出现BUG。

不了解底层的@Builder而去使用可能会出现奇奇怪怪的问题,使用大神封装好的东西是这样子的,在出现问题时我们就可能回去分析源码,故而知道问题所在,大家加油学习,这个内容我也是学习了大神的作品才知道的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构师-考试-基础题-错题集锦1

系统架构师-考试-基础题-错题集锦 1.当一台服务器出现故障时将业务迁移到另外一台物理服务器上,保障了业务的连续性。 2.面向对象: 实体类,边界类,控制类 3.RUP:UP,统一过程,以架构为中心&am…

LeetCode700二叉搜索树中的搜索

题目描述 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 解析 最基本的二叉搜索树的应用,递归或者while循环都可以…

分布式数据库HBase入门指南

目录 概述 HBase 的主要特点包括: HBase 的典型应用场景包括: 访问接口 1. Java API: 2. REST API: 3. Thrift API: 4. 其他访问接口: HBase 数据模型 概述 该模型具有以下特点: 1. 面向列: 2. 多维: 3. 稀疏: 数据存储: 数据访问: HBase 的数据模型…

炼丹学习笔记2---ubuntu2004运行3D Gaussian Splatting记录

前言 主要想看看前沿效果,看看跟激光slam出来效果差多少。折腾过程中,务必 根据本地的cuda版本号,安装对应的torch相关东西。 1、拉仓库 git clone https://github.com/graphdeco-inria/gaussian-splatting.git2、创建环境并激活 conda c…

MySQL详细安装、配置过程,多图,详解

本文适合centos7环境下安装mysql,在安装和卸载过程中,都在root用户下完成。文章目录 清理环境获取mysql官方yum源安装mysql yum源安装mysql服务安装报错解决办法验证是否安装完成启动mysql服务登录服务方法一:方法二:方法三&#…

数据意外删除?安卓手机数据恢复教程来帮你解救

手机不仅仅是一个通讯工具,更是我们记录生活、工作、学习等各种信息的重要载体,无论是拍照、录音、录像,还是文字记录,手机都能轻松完成。可有时候我们会不小心删除一些重要的数据,这时候我们该怎么办呢?别…

Modbus-RTU/TCP规约 | 报文解析 | 组织报文与解析报文(C++)

文章目录 一、MODBUS规约1.MODBUS-RTU规约2.MODBUS-TCP规约 二、报文解析1.MODBUS-RTU报文帧解析2.MODBUS-TCP报文帧解析 三、C代码实现组织报文与解析报文 一、MODBUS规约 Modbus规约是一种广泛使用的串行通信协议(应用层报文传输协议),用于…

鲲泰新闻丨第七届数字中国建设峰会正式启幕,神州鲲泰携手天翼云共筑智算云生态

2024年5月23日,由国家发展改革委、国家数据局、国家网信办、科技部、国务院国资委、福建省人民政府共同主办的“第七届数字中国建设峰会”在福建省福州市海峡国际会展中心盛大开幕。 数字中国建设峰会是展示数字中国建设成就的盛会,本次峰会以“释放数据…

【MYSQL】分数排名

表: Scores ---------------------- | Column Name | Type | ---------------------- | id | int | | score | decimal | ---------------------- id 是该表的主键(有不同值的列)。 该表的每一行都包含了一场比赛的分数。Score 是…

草图大师2024怎么保存低版本呢?插件怎么写?

草图大师是一款流行的绘图和设计软件,为了向后兼容,保存低版本文件时,可以采取以下步骤: su模型库 1.另存为旧版本格式: 在保存文件时,草图大师通常会提供一个选项,让你选择要保存的文件格式和…

智简云携手云器Lakehouse打造一体化大数据平台,释放数据价值

导读 本篇分享的是智简云使用云器Lakehouse升级数据平台的实践总结。 智简云,是一家拥有十余年历史的科技公司,专注于企业服务领域,开发了两款核心产品:基于PASS平台的客户关系管理(CRM)系统和为中小型用…

Go微服务——go-micro v4安装使用

安装go-micro 打开cmd窗口,执行以下命令 go install github.com/go-micro/cli/cmd/go-microlatest测试是否成功安装 go-micro -v创建服务 go-micro new service helloworldwindows 安装make 安装地址 https://gnuwin32.sourceforge.net/packages/make.htm 配置…

springboot集成达梦数据库8,用springboot+mtbatisplus查询值为空

springboot集成达梦数据库8,用springbootmtbatisplus查询值为空 背景:springboot集成达梦数据库8,用springbootmtbatisplus查询值为空,但是在DB管理工具中是可以查询到数据的。 原因及解决方法:执行添加语句后&#xf…

《MySQL怎样运行的》—InnoDB数据页结构

在上一篇文章中我们讲了,InnoDB的数据页是InnoDB管理存储空间的基本单位,一个页的大小基本为16kb 那你有没有疑问,就是说这个InnoDB的数据页的结构是什么样的,还有他这些结构分别有那些功能~接下来我们一一讲解 数据页的总览结构…

Linux笔记之命令行JSON处理器jq

Linux笔记之命令行JSON处理器jq code review! 文章目录 Linux笔记之命令行JSON处理器jq1.安装2.jq 基本用法3.例程3.1. 示例JSON文件3.2. 读取特定字段3.3. 管道过滤器(Pipe Filters)3.4. 映射过滤器(Map Filters)3.5. 条件过滤…

短视频都是怎么剪的:四川京之华锦信息技术公司

短视频都是怎么剪的 随着移动互联网的迅猛发展,短视频已成为人们日常生活中不可或缺的一部分。无论是记录生活的点滴,还是展示个人才艺,短视频都以其短小精悍、直观生动的特点,吸引了众多用户的关注。四川京之华锦信息技术公司那…

自动化重置数据库功能的探索与实践

1、简介 在现代软件开发中,尤其是涉及到数据驱动的应用程序时,开发和测试环境中数据库的管理是至关重要的一环。为了确保开发和测试环境中的数据库始终处于一致的状态,自动化重置数据库成为了一种常见的实践。本文旨在介绍如何通过Shell脚本…

内网(极空间)搭建gitlab跳板机转发端口及域名配置

背景说明 https://blog.csdn.net/GodDavide/article/details/139182475 上文说到: 我已经用docker搭好了gitlab-ce服务,但我是部署在自己的家庭nas-极空间z4pro里的,属于内网环境。 另外我有一台阿里云服务器,做跳板机。 我有一个阿里的域名…

老Java学 Go 笔录(二) 从 go 的编译开始学起

目录 一.版本选择二.环境准备三.工具的选择四.第一个 hello go4.1 开发4.2 编译4.3 编译运行4.4 直接安装 五.用 go 快速搭建 webserver六.调用外部三方方法七.go vs java 的执行 前言 专栏旨在利用现有的 java 体系内容去完成 go 语言的学习. 本次行文是在 https://go.dev/doc…

C# 标识符、变量的命名规范

标识符: 定义的变量名 方法名 类名 等用于识别的内容(变量的命名规范) 命名注意事项: 1.不能以数字开头 2.不能有特殊符号(下划线除外) 3.不能有程序关键字 4.不能重复使用一个名字 命名方法(常用): 驼峰命名法 帕斯卡命名法 不建议使用拼音或汉字命名