java中超好用的簡化代碼工具:Lombok使用

Lombok使用

介紹

你是否也被java的各種模板化代碼困擾,各種getter、setter、toString等等

在項目中使用Lombok可以減少很多這種重複代碼的書寫。

IDEA中的安裝

打開IDEA的Setting –> 選擇Plugins選項 –> 選擇Browse repositories –> 搜索lombok –> 點擊安裝 –> 安裝完成重啟IDEA –> 安裝成功


java中超好用的簡化代碼工具:Lombok使用


引入依賴

在項目中添加Lombok依賴jar,在pom文件中添加如下部分。(不清楚版本可以在Maven倉庫中搜索)

org.projectlombok

lombok

1.16.18

provided

使用

在對應的類或者方法上使用對應註解即可。

Lombok有哪些註解

  • @Setter
  • @Getter
  • @Data
  • @Log(這是一個泛型註解,具體有很多種形式)
  • @AllArgsConstructor
  • @NoArgsConstructor
  • @EqualsAndHashCode
  • @NonNull
  • @Cleanup
  • @ToString
  • @RequiredArgsConstructor
  • @Value
  • @SneakyThrows
  • @Synchronized

註解詳情

log

註解在 上。有如下可選擇可用:

//@CommonsLog

privatestaticfinal org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

//@JBossLog

privatestaticfinal org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);

//@Log

privatestaticfinal java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

//@Log4j

privatestaticfinal org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

//@Log4j2

privatestaticfinal org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

//@Slf4j

privatestaticfinal org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

//@XSlf4j

privatestaticfinal org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

默認情況下,記錄器的主題(或名稱)將是使用註釋進行@Log註釋的類的類名稱。這可以通過指定topic參數來定製。例如:@XSlf4j(topic="reporting")。

該類型註解可以滿足不同的日誌系統的日誌使用,Lombok提供了一些自定義配置項可以參看官方說明文檔。

Log官方介紹

@Getter和@Setter

該註解使用在類或者屬性上,該註解可以使用在類上也可以使用在屬性上。生成的getter遵循布爾屬性的約定。例如:boolean類型的sex,getter方法為isSex而不是getSex

在使用該註解時,會默認生成一個無參構造。和對應的getterhe setter方法


java中超好用的簡化代碼工具:Lombok使用


該註解也可以使用在單個屬性上,會默認生成一個無參構造:


java中超好用的簡化代碼工具:Lombok使用


@NonNull

該註解使用在屬性上,該註解用於屬的非空檢查,當放在setter方法的字段上,將生成一個空檢查,如果為空,則拋出NullPointerException。

該註解會默認是生成一個無參構造。


java中超好用的簡化代碼工具:Lombok使用


@toString

該註解使用在上,該註解默認生成任何非講臺字段以名稱-值的形式輸出。

1、如果需要可以通過註釋參數includeFieldNames來控制輸出中是否包含的屬性名稱。

2、可以通過exclude參數中包含字段名稱,可以從生成的方法中排除特定字段。

3、可以通過callSuper參數控制父類的輸出。

  • includeFieldNames是否包含屬性名稱:


java中超好用的簡化代碼工具:Lombok使用


  • exclude 排除指定字段


java中超好用的簡化代碼工具:Lombok使用


  • callSuper輸出父類屬性
java中超好用的簡化代碼工具:Lombok使用



注意:父類也要有toString方法,不然打印的是對象內存地址

@EqualsAndHashCode

該註解使用在上,該註解在類級別註釋會同時生成equals和hashCode。

注意繼承關係的時候該註解的使用。詳細介紹參照官方介紹


java中超好用的簡化代碼工具:Lombok使用


存在繼承關係需要設置callSuper參數為true。

@Data

該註解使用在

上,該註解是最常用的註解,它結合了@ToString,@EqualsAndHashCode, @Getter和@Setter。本質上使用@Data註解,類默認@ToString和@EqualsAndHashCode以及每個字段都有@Setter和@getter。該註解也會生成一個公共構造函數,可以將任何@NonNull和final字段作為參數。

雖然@Data註解非常有用,但是它沒有與其他註解相同的控制粒度。@Data提供了一個可以生成靜態工廠的單一參數,將staticConstructor參數設置為所需要的名稱,Lombok自動生成的構造函數設置為私有,並提供公開的給定名稱的靜態工廠方法。

java中超好用的簡化代碼工具:Lombok使用



@AllArgsConstructor

該註解使用在上,該註解提供一個全參數的構造方法,默認不提供無參構造。


java中超好用的簡化代碼工具:Lombok使用


@NoArgsConstructor

該註解使用在上,該註解提供一個無參構造


java中超好用的簡化代碼工具:Lombok使用


@RequiredArgsConstructor

該註解使用在上,使用類中所有帶有 @NonNull 註解的或者帶有 final 修飾的成員變量生成對應的構造方法。


java中超好用的簡化代碼工具:Lombok使用


@Value

這個註解用在 類 上,會生成含所有參數的構造方法,get 方法,此外還提供了equals、hashCode、toString 方法。

注意:沒有setter


java中超好用的簡化代碼工具:Lombok使用


@Cleanup

該註解使用在屬性前,該註解是用來保證分配的資源被釋放。在本地變量上使用該註解,任何後續代碼都將封裝在try/finally中,確保當前作用於中的資源被釋放。默認@Cleanup清理的方法為close,可以使用value指定不同的方法名稱。


java中超好用的簡化代碼工具:Lombok使用


@Synchronized

該註解使用在類或者實例方法上,Synchronized在一個方法上,使用關鍵字可能會導致結果和想要的結果不同,因為多線程情況下會出現異常情況。Synchronized

關鍵字將在this示例方法情況下鎖定當前對象,或者class講臺方法的對象上多鎖定。這可能會導致死鎖現象。一般情況下建議鎖定一個專門用於此目的的獨立鎖,而不是允許公共對象進行鎖定。該註解也是為了達到該目的。


java中超好用的簡化代碼工具:Lombok使用


@SneakyThrows

該註解使用在方法上,這個註解用在 方法 上,可以將方法中的代碼用 try-catch 語句包裹起來,捕獲異常並在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可以使用 @SneakyThrows(Exception.class) 的形式指定拋出哪種異常。該註解需要謹慎使用。詳情參看官方介紹


java中超好用的簡化代碼工具:Lombok使用


結語

Lombok的目的是減少代碼的重複編寫,並提供比較好的解決方案。當然也存在一些爭議性的註解,可以根據實際場景進項使用。Lombok有一些實驗註解可以在官網查看。


分享到:


相關文章: