什麼是Lombok Lombok是一個Java庫,能自動插入編輯器並構建工具,簡化Java開發。 官網: https://www.projectlombok.org/ Lombok的作用 通過 添加註解 的方式,Lombok能以簡單的註解形式來簡化java代碼,提高開發人員的開發效率。 例如開發中經 ...
什麼是Lombok
Lombok是一個Java庫,能自動插入編輯器並構建工具,簡化Java開發。
官網: https://www.projectlombok.org/
Lombok的作用
通過 添加註解 的方式,Lombok能以簡單的註解形式來簡化java代碼,提高開發人員的開發效率。
例如開發中經常需要寫的javabean,都需要花時間去添加相應的getter/setter,也許還要去寫構造器、equals等方法,而且需要維護,當屬性多時會出現大量的getter/setter方法,這些顯得很冗長也沒有太多技術含量,一旦修改屬性,就容易出現忘記修改對應方法的失誤,使代碼看起來更簡潔些。
Lombok的配置
使用Lombok 有兩個工作要做:
-
安裝idea的插件
-
在項目裡面添加 lombok的依賴。
添加maven依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
安裝插件
使用Lombok還需要插件的配合,使用開發工具為idea. 打開idea的設置,點擊Plugins,點擊Browse repositories,在彈出的視窗中搜索lombok,然後安裝即可
解決編譯時出錯問題
編譯時出錯,可能是沒有enable註解處理器。Annotation Processors > Enable annotation processing。設置完成之後程式正常運行。
總結
-
Lombok: 就是一個工具, 簡化java代碼開發
-
Lombok環境
-
添加坐標
-
添加插件
-
Lombok的常用註解
- @Data
- @Getter/@Setter
- @ToString
- @NoArgsConstructor、@AllArgsConstructor
@Data:@Data註解在類上,會為類的所有屬性自動生成setter/getter、equals、canEqual、hashCode、toString方法,如為final屬性,則不會為該屬性生成setter方法。
@Data
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@Getter/@Setter:如果覺得@Data太過殘暴不夠精細,可以使用@Getter/@Setter註解,此註解在屬性上,可以為相應的屬性自動生成Getter/Setter方法.
public class User implements Serializable{
@Setter
@Getter
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@ToString:類使用@ToString註解,Lombok會生成一個toString()方法,預設情況下,會輸出類名、所有屬性(會按照屬性定義順序),用逗號來分割。 通過exclude屬性指定忽略欄位不輸出,
@ToString(exclude = {"id"})
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@xxxConstructor
@NoArgsConstructor: 無參構造器
@NoArgsConstructor
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@AllArgsConstructor: 全參構造器
@AllArgsConstructor
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
**總結**
-
@Data:用在類上面的 , 生成set,get, toString, hashCode,canEqual、equals方法
-
@Getter:用在欄位, 生成get方法
-
@Setter:用在欄位, 生成set方法
-
@ToString:用在類上面的 生成toString方法
-
@xxxConstructor:用在類上面的 生成構造方法 (只能生成無參和全參的構造方法)
優點:
-
能通過註解的形式自動生成構造器、getter/setter、equals、hashcode、toString等方法,提高了一定的開發效率
-
讓代碼變得簡潔,不用過多的去關註相應的方法
-
屬性做修改時,也簡化了維護為這些屬性所生成的getter/setter方法等
缺點:
-
不支持多種參數構造器的重載 , 要不就是無參,要不就是全參 , 如果希望做成只有一個參數、或者幾個參數的構造函數,需要自己手動添加。
-
雖然省去了手動創建getter/setter方法的麻煩,但大大降低了源代碼的可讀性和完整性,降低了閱讀代碼的舒適度