在項目中使用Lombok能夠減小不少重複代碼的書寫。好比說getter/setter/toString等方法的編寫。html
打開IDEA的Setting –> 選擇Plugins選項 –> 選擇Browse repositories –> 搜索lombok –> 點擊安裝 –> 安裝完成重啓IDEA –> 安裝成功java
在項目中添加Lombok依賴jar,在pom文件中添加以下部分。(不清楚版本能夠在Maven倉庫中搜索)web
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope> </dependency>
在對應的類或者方法上使用對應註解便可。例如:
apache
註解在 類 上。有以下可選擇可用:多線程
//@CommonsLog private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class); //@JBossLog private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class); //@Log private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName()); //@Log4j private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class); //@Log4j2 private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class); //@Slf4j private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class); //@XSlf4j private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
默認狀況下,記錄器的主題(或名稱)將是使用註釋進行@Log
註釋的類的類名稱。這能夠經過指定topic
參數來定製。例如:@XSlf4j(topic="reporting")
。ide
該類型註解能夠知足不一樣的日誌系統的日誌使用,Lombok提供了一些自定義配置項能夠參看官方說明文檔。函數
Log官方介紹ui
該註解使用在類或者屬性上,該註解可使用在類上也可使用在屬性上。生成的getter遵循布爾屬性的約定。例如:boolean類型的sex,getter方法爲isSex
而不是getSex
this
在使用該註解時,會默認生成一個無參構造。和對應的getterhe setter方法
idea
該註解也可使用在單個屬性上,會默認生成一個無參構造:
該註解使用在類上,該註解會提供getter、setter、equals、canEqual、hashCode、toString方法。
該註解使用在屬性上,該註解用於屬的非空檢查,當放在setter方法的字段上,將生成一個空檢查,若是爲空,則拋出NullPointerException
。
該註解會默認是生成一個無參構造。
該註解使用在類上,該註解默認生成任何非講臺字段以名稱-值的形式輸出。
一、若是須要能夠經過註釋參數includeFieldNames
來控制輸出中是否包含的屬性名稱。
二、能夠經過exclude
參數中包含字段名稱,能夠從生成的方法中排除特定字段。
三、能夠經過callSuper
參數控制父類的輸出。
注意:父類也要有toString方法,否則打印的是對象內存地址
該註解使用在類上,該註解在類級別註釋會同時生成equals
和hashCode
。
注意繼承關係的時候該註解的使用。詳細介紹參照官方介紹
存在繼承關係須要設置callSuper
參數爲true
。
該註解使用在類上,該註解是最經常使用的註解,它結合了@ToString,@EqualsAndHashCode, @Getter和@Setter。本質上使用@Data
註解,類默認@ToString
和@EqualsAndHashCode
以及每一個字段都有@Setter
和@getter
。該註解也會生成一個公共構造函數,能夠將任何@NonNull
和final
字段做爲參數。
雖然@Data
註解很是有用,可是它沒有與其餘註解相同的控制粒度。@Data
提供了一個能夠生成靜態工廠的單一參數,將staticConstructor
參數設置爲所須要的名稱,Lombok自動生成的構造函數設置爲私有,並提供公開的給定名稱的靜態工廠方法。
該註解使用在類上,該註解提供一個全參數的構造方法,默認不提供無參構造。
該註解使用在類上,該註解提供一個無參構造
該註解使用在類上,使用類中全部帶有 @NonNull 註解的或者帶有 final 修飾的成員變量生成對應的構造方法。
這個註解用在 類 上,會生成含全部參數的構造方法,get 方法,此外還提供了equals、hashCode、toString 方法。
注意:沒有setter
該註解使用在屬性前,該註解是用來保證分配的資源被釋放。在本地變量上使用該註解,任何後續代碼都將封裝在try/finally中,確保當前做用於中的資源被釋放。默認@Cleanup
清理的方法爲close
,可使用value指定不一樣的方法名稱。
該註解使用在類或者實例方法上,Synchronized在一個方法上,使用關鍵字可能會致使結果和想要的結果不一樣,由於多線程狀況下會出現異常狀況。Synchronized
關鍵字將在this示例方法狀況下鎖定當前對象,或者class講臺方法的對象上多鎖定。這可能會致使死鎖現象。通常狀況下建議鎖定一個專門用於此目的的獨立鎖,而不是容許公共對象進行鎖定。該註解也是爲了達到該目的。
該註解使用在方法上,這個註解用在 方法 上,能夠將方法中的代碼用 try-catch 語句包裹起來,捕獲異常並在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可使用 @SneakyThrows(Exception.class) 的形式指定拋出哪一種異常。該註解須要謹慎使用。詳情參看官方介紹
Lombok的目的是減小代碼的重複編寫,並提供比較好的解決方案。固然也存在一些爭議性的註解,能夠根據實際場景進項使用。Lombok有一些實驗註解能夠在官網查看。