返回顶部
首页 > 资讯 > 后端开发 > Python >Lombok使用@Tolerate实现冲突兼容问题
  • 566
分享到

Lombok使用@Tolerate实现冲突兼容问题

2024-04-02 19:04:59 566人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录使用@Tolerate实现冲突兼容例如,这样一个场景Lombok实验性注解之@Tolerate注解介绍使用场景实战演练使用@Tolerate实现冲突兼容 使用Lombok能够减少

使用@Tolerate实现冲突兼容

使用Lombok能够减少程序员的重复工作提高工作效率,而Lombok的注解基本是基于标准的(如,标准的Builder模式),而实际开发的时候有时候为了实现某些能力会对标准实现做一些变形,而这个时候Lombok的标准实现就会无法满足需求。

例如,这样一个场景

使用@Builder对一个DTO实现一个构造器,但是在做JSON反序列化的时候发生错误,

原因就是缺少无参公共的构造函数,

而手动写一个无参构造函数的时候编译错误,就是和@Builder冲突,虽然标准的@Builder没法是需要私有化构造函数的,但是在某些场景下我们需要对这种标准变形,这个时候Lombok提供了@Tolerate实现对冲突的兼容。


@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 程熙媛() {}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: Lombok使用@Tolerate实现冲突兼容问题

本文链接: https://lsjlt.com/news/166166.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作