1. 程式人生 > >IDEA中使用lombok外掛

IDEA中使用lombok外掛

Lombok是什麼?

lombok是一個可以通過簡單的註解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 Java 程式碼的工具,簡單來說,比如我們新建了一個類,然後在其中寫了幾個欄位,然後通常情況下我們需要手動去建立get、set、構造方法、log、toString、hashCode、equals等等,尤其是一個類有幾十個屬性時,那個長長的get、set方法真的是慘不忍睹。lombok的作用就是為了省去我們手動建立這些程式碼的麻煩,它能夠在我們編譯原始碼的時候自動幫我們生成這些方法。

1.下載外掛

在IDEA中第一次使用的時候是需要去下載一個外掛的,下載步驟為:

File–>Setting–>Plugins–>Browse repositories–>搜尋框輸入lombok–>Install。
圖片

2.引用依賴

最新的lombok依賴為1.18.2,我們在pom檔案中引入即可

1
2
3
4
5
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
</dependency>

使用

我所常用的註解其實只有兩個,一個是@Data,一個是@Slf4j。
下面是我在一個哥們的部落格上拷貝的一段比較詳細的介紹,大家可以參考一下。

原文連結

  • @Data:註解在類上,相當於同時使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor這些註解,對於POJO類十分有用

  • val:用在區域性變數前面,相當於將變數宣告為final

  • @NonNull:給方法引數增加這個註解會自動在方法內對該引數進行是否為空的校驗,如果為空,則丟擲NPE(NullPointerException)

  • @Cleanup:自動管理資源,用在區域性變數之前,在當前變數範圍內即將執行完畢退出之前會自動清理資源,自動生成try-finally這樣的程式碼來關閉流

  • @Getter/@Setter:用在屬性上,再也不用自己手寫setter和getter方法了,還可以指定訪問範圍

  • @ToString:用在類上,可以自動覆寫toString方法,當然還可以加其他引數,例如@ToString(exclude=”id”)排除id屬性,或者@ToString(callSuper=true, includeFieldNames=true)呼叫父類的toString方法,包含所有屬性

  • @EqualsAndHashCode:用在類上,自動生成equals方法和hashCode方法

  • @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:用在類上,自動生成無參構造和使用所有引數的建構函式以及把所有@NonNull屬性作為引數的建構函式,如果指定staticName = “of”引數,同時還會生成一個返回類物件的靜態工廠方法,比使用建構函式方便很多

  • @Value:用在類上,是@Data的不可變形式,相當於為屬性新增final宣告,只提供getter方法,而不提供setter方法

  • @Builder:用在類、構造器、方法上,為你提供複雜的builder APIs,讓你可以像如下方式一樣呼叫Person.builder().name(“Adam Savage”).city(“San Francisco”).job(“Mythbusters”).job(“Unchained Reaction”).build();更多說明參考Builder

  • @SneakyThrows:自動拋受檢異常,而無需顯式在方法上使用throws語句

  • @Synchronized:用在方法上,將方法宣告為同步的,並自動加鎖,而鎖物件是一個私有的屬性$lock或$LOCK,而java中的synchronized關鍵字鎖物件是this,鎖在this或者自己的類物件上存在副作用,就是你不能阻止非受控程式碼去鎖this或者類物件,這可能會導致競爭條件或者其它執行緒錯誤

  • @Getter(lazy=true):可以替代經典的Double Check Lock樣板程式碼

  • @Log:根據不同的註解生成不同型別的log物件,但是例項名稱都是log,有六種可選實現類

  • @CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

  • @Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());

  • @Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);

  • @Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

  • @Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

  • @XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

本文出自http://zhixiang.org.cn,轉載請保留。