Lombok使用@Tolerate实现冲突兼容问题
作者:刹那的娜娜 发布时间:2021-06-27 06:50:55
使用@Tolerate实现冲突兼容
使用Lombok能够减少程序员的重复工作提高工作效率,而Lombok的注解基本是基于标准的(如,标准的Builder模式),而实际开发的时候有时候为了实现某些能力会对标准实现做一些变形,而这个时候Lombok的标准实现就会无法满足需求。
例如,这样一个场景
使用@Builder对一个DTO实现一个构造器,但是在做Json反序列化的时候发生错误,
原因就是缺少无参公共的构造函数,
而手动写一个无参构造函数的时候编译错误,就是和@Builder冲突,虽然标准的@Builder没法是需要私有化构造函数的,但是在某些场景下我们需要对这种标准变形,这个时候Lombok提供了@Tolerate实现对冲突的兼容。
/**
* <p>
* 包括能力、知识点等
* </p>
*
* @author hlong
* @since 2020-09-10
*/
@Data
@Entity
@Table(name = "que_attr")
@Builder
@ApiModel(value="QueAttr对象", description="包括能力、知识点等")
public class QueAttr implements Serializable {
@Tolerate
QueAttr() {}
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "属性编号,系统自动产生")
@Id
@Column(name = "attr_id")
private Long attrId;
@ApiModelProperty(value = "属性编码")
@Column(name = "attr_code")
private String attrCode;
@ApiModelProperty(value = "属性名称")
@Column(name = "name")
private String name;
@ApiModelProperty(value = "属性名称中文")
@Column(name = "name_cn")
private String nameCn;
@ApiModelProperty(value = "简称")
@Column(name = "name_short")
private String nameShort;
@ApiModelProperty(value = "上级节点")
@Column(name = "attr_up")
private Long attrUp;
@ApiModelProperty(value = "级别:第1级为0")
@Column(name = "lev")
private Integer lev;
@ApiModelProperty(value = "从小到大,从1开始")
@Column(name = "sort_no")
private Integer sortNo;
@ApiModelProperty(value = "(枚举)属性分类信息 见字典表,这里主要是能力和知识点")
@Column(name = "attr_type")
private Long attrType;
@ApiModelProperty(value = "机构编号:0公司")
@Column(name = "org_id")
private Long orgId;
@Column(name = "subject")
private Long subject;
@Column(name = "key_stage")
private Long keyStage;
@Column(name = "grade")
private Long grade;
@Column(name = "term")
private Integer term;
@ApiModelProperty(value = "添加人")
@Column(name = "user_create")
private Long userCreate;
@ApiModelProperty(value = "-1删除 0草稿 1有效")
@Column(name = "status")
private Integer status;
@Column(name = "sys_code")
private Long sysCode;
@ApiModelProperty(value = "更新时间")
@Column(name = "time_update")
private Timestamp timeUpdate;
@ApiModelProperty(value = "备注")
@Column(name = "remark")
private String remark;
@ApiModelProperty(value = "属性的uuid")
@Column(name = "attr_uuid")
private String attrUuid;
@ApiModelProperty(value = "属性的父级uuid")
@Column(name = "attr_up_uuid")
private String attrUpUuid;
@ApiModelProperty(value = "教材版本uuid")
@Column(name = "book_code")
private String bookCode;
@ApiModelProperty(value = "教材版本名称")
@Column(name = "book_name")
private String bookName;
@ApiModelProperty(value = "年级的code-学院code")
@Column(name = "grade_uuid")
private String gradeUuid;
}
Lombok实验性注解之@Tolerate
注解介绍
实现对冲突的兼容,官方解释:使任何方法或者构造函数让 lombok 假装它不存在,作用于方法上,没什么大用,可以配合 @Builder 使用
使用场景
使用 Lombok 能够减少程序员的重复工作提高工作效率,而 lombok 的注解基本是基于标准的(如,标准的 Builder 模式),而实际开发的时候有时候为了实现某些能力会对标准实现做一些变形,而这个时候 lombok 的标准实现就会无法满足需求
使用 @Builder 对一个 DTO 实现一个构造器,但是在做 Json 反序列化的时候发生错误,原因就是缺少无参公共的构造函数,而手动写一个无参构造函数的时候编译错误,就是和 @Builder 冲突,虽然标准的 @Builder 没法是需要私有化构造函数的,但是在某些场景下我们需要对这种标准变形,这个时候 lombok 提供了 @Tolerate 实现对冲突的兼容
实战演练
@Builder
public class 程熙媛 {
@Tolerate
public 程熙媛() {}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/qq_41536778/article/details/113374213


猜你喜欢
- 比如,现在有一些图形,需要计算他们的面积,计算面积的方法都不一样,可以这么做声明一个抽象类//基类 abstrac
- 对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案。关于FileZilla Server服务器的详细搭建配置过程,
- 第一步,导jar包<!--Email--> <dependency&
- 本文实例讲述了Java使用Preference类保存上一次记录的方法。分享给大家供大家参考。具体分析如下:在使用java中JFileChoo
- 上一篇文章谈到音频剪切、混音、拼接与转码,也详细介绍cMake配置与涉及FFmpeg文件的导入: android端采用FFmpeg进行音频混
- 本文实例为大家分享了Android倒计时进度条展示的具体代码,供大家参考,具体内容如下效果预览源代码传送门:https://github.c
- 本文展示了C#实现获取一年中是第几个星期的方法,对初学者学习C#时间操作有一定的借鉴价值,具体实现代码如下:主要功能代码如下:/// <
- java简单模拟微信抢红包功能,本例发100元红包,有10个人抢,为了尽可能的公平,每个人的红包金额都要随机(保证结果的不确定性,本例抢红包
- 目录注解是什么?元注解是什么?标准的元注解:@Target元注解:@Retention元注解:@Documented元注解:@Inherit
- 一、引入类型别名当配置 XML 文件,需要指明Java类型时,类型别名可替代Java类型的全名,一般会设置一个简单缩写的类型别名去替代它,用
- 在使用Java web开发的后端工程师们大多会使用Maven作为项目构建以及编译的工具,微服务和大中台当道的今天,更加关注maven的细节是
- 仅做学习交流,如有侵犯联系必删。前言一篇酷狗app安卓逆向的文章,难度适中。样本: 酷狗app v10.8.8工具: jadx、Pixel3
- 1.editplus1.1 官方下载https://www.editplus.com/官方下载最新的64位2 .解压就可以使用2.1 vsc
- 本文实例讲述了C#异步执行任务的方法。分享给大家供大家参考。具体如下:// 异步执行耗时任务(适合不需要等它的执行结果的场景,如发邮件、发短
- PDF是一种在我们日常工作学习中最常用到的文档格式之一,但常常也会因为文档的不易编辑的特点,在遇到需要编辑PDF文档内容或者转换文件格式的情
- java实现拖拽示例Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图:package com;import java.
- 前言单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”而我对单例的
- 前言本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友
- 前言一说到Socket,想必大家都或多或少有所涉及,从最初的计算机网络课程,讲述了tcp协议,而Socket就是对协议的进一步封装,使我们开
- 1、二叉搜索树的概念 二叉搜索树又称二叉排序树,它可以是一颗空树,亦可以是一颗具有如下性质的二叉树: &