3 回答

TA貢獻1155條經(jīng)驗 獲得超0個贊
我會避免在 DTO 中使用 @Data,因為它有太多陷阱。首先,正如您所提到的,它是可變的,您并不真正想要 DTO。盡管它是可變的,但它實現(xiàn)了 equals() 和 hashCode() 這只是自找麻煩。
您可以將 @Value 用于不可變的 DTO。對于傳入的 DTO,您可能需要添加lombok.anyConstructor.addConstructorProperties
到 lombok.config,這將允許像 jackson 這樣的庫在沒有默認構(gòu)造函數(shù)的情況下反序列化到您的 POJO。

TA貢獻2003條經(jīng)驗 獲得超2個贊
DTO是用來傳輸數(shù)據(jù)信息的,有些信息其實是我們不希望用戶能夠更改或訪問的,比如用戶密碼,我們不想在用戶看到加密后的密碼時傳遞給前端,或者我們不希望用戶在更改信息時修改密碼,在這個序列化過程中起作用的是setter和getter,以及自動為所有字段生成getter和setter的數(shù)據(jù)注釋。
例如
@Data
class User{
private String userName;
private String pwd;
}
這個類,將有所有的 setter 和 getter。當你轉(zhuǎn)換到網(wǎng)絡時,你會看到
{userName: "123", pwd: "xxx"}
這很糟糕。但是如果你使用 DTO
class User{
private String userName;
private String pwd;
public String getUserName(){
return userName;
}
}
他們只看到
{userName: "123"}
添加回答
舉報