亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java DTO 類上使用數據注釋

在 Java DTO 類上使用數據注釋

哈士奇WWW 2021-07-12 18:57:37
我在對 DTO 類使用數據注釋時感到困惑。這是我的示例課程。@Datapublic class MyClass {   private Long id;   private String name;}我在網上讀到,專門在 DTO 類上使用 Data 注釋將允許使用生成的 setter 更改字段的值。我應該刪除 lombok 數據注釋嗎?并手動實現 getter 和 setter。謝謝 :)
查看完整描述

3 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

我會避免在 DTO 中使用 @Data,因為它有太多陷阱。首先,正如您所提到的,它是可變的,您并不真正想要 DTO。盡管它是可變的,但它實現了 equals() 和 hashCode() 這只是自找麻煩。

您可以將 @Value 用于不可變的 DTO。對于傳入的 DTO,您可能需要添加lombok.anyConstructor.addConstructorProperties到 lombok.config,這將允許像 jackson 這樣的庫在沒有默認構造函數的情況下反序列化到您的 POJO。


查看完整回答
反對 回復 2021-07-14
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

DTO是用來傳輸數據信息的,有些信息其實是我們不希望用戶能夠更改或訪問的,比如用戶密碼,我們不想在用戶看到加密后的密碼時傳遞給前端,或者我們不希望用戶在更改信息時修改密碼,在這個序列化過程中起作用的是setter和getter,以及自動為所有字段生成getter和setter的數據注釋。


例如


@Data

class User{


private String userName;


private String pwd;

}

這個類,將有所有的 setter 和 getter。當你轉換到網絡時,你會看到


{userName: "123", pwd: "xxx"}

這很糟糕。但是如果你使用 DTO


class User{


private String userName;


private String pwd;


public String getUserName(){

    return userName;

}

}

他們只看到


{userName: "123"}


查看完整回答
反對 回復 2021-07-14
  • 3 回答
  • 0 關注
  • 518 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號