簡介
平時我們在寫Java程式碼時,建立一個dto時需要為對應的私有屬性提供get/set方法,這個操作可以使用IDE的快捷鍵來完成,但是還有更方便的方式,就是lombok。
什麼是lombok
Lombok是一個通過註解以達到減少程式碼的Java庫,如通過註解的方式減少get,set方法,構造方法等。
lombok的安裝
使用maven新增lombok的依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>
複製程式碼
這時我們已經可以使用lombok的api了,但是要讓IDE識別還需要安裝外掛,Intellij Idea方法: File->settings->Plugins->Browse repositories->Lombok
點選install後重啟idea即可lombok的使用
常用的註解如下:
- @Data
- @Setter
- @Getter
- @NonNull
- @Synchronized
- @ToString
- @EqualsAndHashCode
- @Cleanup
- @SneakyThrows
@Data
該註解相當於同時加上@Setter @Getter,@ToString,@EqualsAndHashCode的效果
@Data
public class DealQueryDTO implements Serializable{
private static final long serialVersionUID = -2364048890660030036L;
private Long dealId;
private Long dealGroupId;
}
複製程式碼
使用idea的view->Tool Windows->structure或者alt+F7檢視類方法,效果如下:
@Setter,@Getter
顧名思義,就是為屬性生成set和get方法。
/**
* author: sunsuwen
* date: 18-01-04
*/
public class Test {
@Getter@Setter
private String name;
}
複製程式碼
等同於程式碼:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
複製程式碼
@NonNull
判斷是否為空,如果為空,則丟擲java.lang.NullPointerException
@Synchronized
這個也比較好理解,也就是加同步鎖,註解還是標註在方法上,但是是鎖程式碼塊,而不是給方法加鎖修飾符
@ToString
也就是設定類的toString方法,有幾個屬性可以設定:
- callSuper 是否輸出父類的toString方法,預設為false
- includeFieldNames 是否包含欄位名稱,預設為true
- exclude 排除生成tostring的欄位
@ToString(callSuper = true,exclude ={"phone"})
public class Test {
private String name;
private String phone;
}
複製程式碼
等價於程式碼
public String toString() {
return "Test{" +
"name='" + name + '\'' +
'}';
}
複製程式碼
@Cleanup
確保資源被釋放,如IO的連線關閉 使用方式:
public void testCleanUp() {
try {
@Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(new byte[] {'Y','e','s'});
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
複製程式碼
等價於程式碼:
public void testCleanUp() {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
baos.write(new byte[]{'Y', 'e', 's'});
System.out.println(baos.toString());
} finally {
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
複製程式碼
總結
如果在專案中還在使用快捷鍵寫get,set方法不妨試試使用lombok帶給你的快感