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
猜你喜欢
- 1. 前言在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题。也有的使用Postman等工具进行测试,虽然
- StringRedisTemplate与RedisTemplate区别点两者的关系是StringRedisTemplate继承RedisTe
- 简介Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能
- 前言:发现用Winform做一个圆角按钮遇到麻烦,主要是锯齿问题,后面想了想办法解决问题了。主要方法是按钮的区域通过Region指定,但按钮
- 一、示例代码访问 localhost:8080/jsonTest —— 返回 json 格式的数据@
- Java调用天气Webservice的小应用废话不多说,直接贴代码: CityReq.javapackage com.weathe
- 一、实验目的1. 掌握面向对象的编程思想、类与对象;2. 掌握类的封装性、继承性和多态性的作用;3. 掌握成员变量和成员方法的特性、构造方法
- 1.概述我们之前讨论过Java Generics的基础知识。在本文中,我们将了解Java中的通用构造函数。 泛型构造函数是至少需要有一个泛型
- static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概
- UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于 * 的事件处理。对于基于 * 的
- 如果 d:\upload\file\ 文件夹不存在,会报错String strPath = "d:\\upload\\file\\
- 好久就想着好好搭建一个ssm框架,自己以后用也方便吧,但是最近的事真的是很多,很多事情都没有去干,有时候自己会怀疑一下人生自己该不该去做程序
- for循环for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。for循环执行的次数是在执行前就确定的。语法格式如下:for(
- 引言前一段有幸参与到一个智能家居项目的开发,由于之前都没有过这方面的开发经验,所以对智能硬件的开发模式和技术栈都颇为好奇。智能可燃气体报警器
- 本文实例讲述了C#从DataTable获取数据的方法。分享给大家供大家参考。具体如下:通过通用类,返回一个DataTable,要想显示每个单
- 本文实例讲述了C#从画刷创建画笔的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Coll
- 本文实例讲述了C#显示文件夹下所有图片文件的方法。分享给大家供大家参考。具体实现方法如下:<%@ Page Language=&quo
- 实现的功能1.导入非xls和xlsx格式的文件2.导入空数据的excel文件3.数据缺失4.导入的excel文件中有重复的数据5.导入的ex
- 一、简介项目开发中存在系统之间互调问题,又不想用dubbo,这里提供几种springboot方案:1、使用Feign进行消费(推荐)2、使用
- 详解 Corba开发之Java实现Service与Client1 概述