欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lombok使用@Tolerate實現(xiàn)沖突兼容問題

 更新時間:2022年08月27日 14:17:08   作者:剎那的娜娜  
這篇文章主要介紹了Lombok使用@Tolerate實現(xiàn)沖突兼容問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用@Tolerate實現(xiàn)沖突兼容

使用Lombok能夠減少程序員的重復(fù)工作提高工作效率,而Lombok的注解基本是基于標準的(如,標準的Builder模式),而實際開發(fā)的時候有時候為了實現(xiàn)某些能力會對標準實現(xiàn)做一些變形,而這個時候Lombok的標準實現(xiàn)就會無法滿足需求。

例如,這樣一個場景

使用@Builder對一個DTO實現(xiàn)一個構(gòu)造器,但是在做Json反序列化的時候發(fā)生錯誤,

原因就是缺少無參公共的構(gòu)造函數(shù),

而手動寫一個無參構(gòu)造函數(shù)的時候編譯錯誤,就是和@Builder沖突,雖然標準的@Builder沒法是需要私有化構(gòu)造函數(shù)的,但是在某些場景下我們需要對這種標準變形,這個時候Lombok提供了@Tolerate實現(xiàn)對沖突的兼容。

/**
 * <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 = "屬性編號,系統(tǒng)自動產(chǎn)生")
    @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 = "上級節(jié)點")
    @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 = "機構(gòu)編號: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-學(xué)院code")
    @Column(name = "grade_uuid")
    private String gradeUuid; 
}

Lombok實驗性注解之@Tolerate

注解介紹

實現(xiàn)對沖突的兼容,官方解釋:使任何方法或者構(gòu)造函數(shù)讓 lombok 假裝它不存在,作用于方法上,沒什么大用,可以配合 @Builder 使用

使用場景

使用 Lombok 能夠減少程序員的重復(fù)工作提高工作效率,而 lombok 的注解基本是基于標準的(如,標準的 Builder 模式),而實際開發(fā)的時候有時候為了實現(xiàn)某些能力會對標準實現(xiàn)做一些變形,而這個時候 lombok 的標準實現(xiàn)就會無法滿足需求

使用 @Builder 對一個 DTO 實現(xiàn)一個構(gòu)造器,但是在做 Json 反序列化的時候發(fā)生錯誤,原因就是缺少無參公共的構(gòu)造函數(shù),而手動寫一個無參構(gòu)造函數(shù)的時候編譯錯誤,就是和 @Builder 沖突,雖然標準的 @Builder 沒法是需要私有化構(gòu)造函數(shù)的,但是在某些場景下我們需要對這種標準變形,這個時候 lombok 提供了 @Tolerate 實現(xiàn)對沖突的兼容

實戰(zhàn)演練

@Builder
public class 程熙媛 {
?? ?@Tolerate
?? ?public 程熙媛() {}
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Java中的Sentinel持久化規(guī)則啟動

    Java中的Sentinel持久化規(guī)則啟動

    這篇文章主要介紹了Java中的Sentinel持久化規(guī)則啟動,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件

    IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件

    本文主要介紹了IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Spring boot整合mybatis實現(xiàn)過程圖解

    Spring boot整合mybatis實現(xiàn)過程圖解

    這篇文章主要介紹了Spring boot整合mybatis實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java集合Set的簡單使用解析

    Java集合Set的簡單使用解析

    這篇文章主要介紹了Java集合Set的簡單使用解析,Set接口是Collection的子接口,Set接口相較于Collection接口沒有提供額外的方法,Set 集合不允許包含相同的元素,如果試把兩個相同的元素加入同一個 Set 集合中,則添加操作失敗,需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)短信發(fā)送驗證碼功能

    Java實現(xiàn)短信發(fā)送驗證碼功能

    這篇文章主要介紹了Java實現(xiàn)短信發(fā)送驗證碼功能,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2018-10-10
  • Java基礎(chǔ)之String類使用與字符串比較

    Java基礎(chǔ)之String類使用與字符串比較

    String類代表字符串,java程序中的所有字符串文字(例如"abc")都被實現(xiàn)為此類的實例。本文將詳解String類的使用,以及如何進行字符串比較
    2022-08-08
  • 關(guān)于Springboot如何獲取IOC容器

    關(guān)于Springboot如何獲取IOC容器

    大家好,我是孤焰。最近我在制作日志審計功能時發(fā)現(xiàn)不知道怎樣獲取到Springboot項目中的IOC容器,經(jīng)過摸索,最終解決了這個問題,現(xiàn)在把解決方式和大家分享一下
    2021-08-08
  • Java程序部署到服務(wù)器上,接口請求下載文件失敗/文件為空/文件名不對的問題

    Java程序部署到服務(wù)器上,接口請求下載文件失敗/文件為空/文件名不對的問題

    這篇文章主要介紹了Java程序部署到服務(wù)器上,接口請求下載文件失敗/文件為空/文件名不對,本文給大家分享錯誤原因及解決方法,需要的朋友可以參考下
    2020-07-07
  • java實現(xiàn)單機限流

    java實現(xiàn)單機限流

    這篇文章主要為大家詳細介紹了java實現(xiàn)單機限流,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • springboot 啟動如何排除某些bean的注入

    springboot 啟動如何排除某些bean的注入

    這篇文章主要介紹了springboot 啟動如何排除某些bean的注入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論