Lombok輪子

前提

自從進公司實習後,項目代碼中能用 Lombok 的都用了,畢竟這麼好的輪子要充分利用好。也能夠減小一些 get/set/toString 方法的編寫,雖然說 IDEA 的插件能夠自動生成 get/set/toString 方法,可是使用 Lombok 可讓代碼更簡潔。

下面看看如何在 IDEA 中如何安裝 Lombok:java

安裝

打開 IDEA 的 Settings 面板,並選擇 Plugins 選項,而後點擊 「Browse repositories」ide

在輸入框輸入」lombok」,獲得搜索結果,點擊安裝,而後安裝提示重啓 IDEA,安裝成功;ui

 

 

引入依賴

在本身的項目裏添加 lombok 的編譯支持,在 pom 文件裏面添加 dependencythis

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope> </dependency>

 

怎麼使用?

在實體類上引入相關的註解就行:spa

 

 

有哪些註解?

  • @Data
  • @Setter
  • @Getter
  • @Log4j
  • @AllArgsConstructor
  • @NoArgsConstructor
  • @EqualsAndHashCode
  • @NonNull
  • @Cleanup
  • @ToString
  • @RequiredArgsConstructor
  • @Value
  • @SneakyThrows
  • @Synchronized

註解詳解

@Data插件

註解在 類 上;提供類全部屬性的 get 和 set 方法,此外還提供了equals、canEqual、hashCode、toString 方法。3d

 

 

@Setter指針

註解在 屬性 上;爲單個屬性提供 set 方法; 註解在 類 上,爲該類全部的屬性提供 set 方法, 都提供默認構造方法。日誌

 

 

 

 

@Gettercode

註解在 屬性 上;爲單個屬性提供 get 方法; 註解在 類 上,爲該類全部的屬性提供 get 方法,都提供默認構造方法。

 

 

 

 

@Log4j

註解在 類 上;爲類提供一個 屬性名爲 log 的 log4j 日誌對象,提供默認構造方法。

 

 

@AllArgsConstructor

註解在 類 上;爲類提供一個全參的構造方法,加了這個註解後,類中不提供默認構造方法了。

 

 

@NoArgsConstructor

註解在 類 上;爲類提供一個無參的構造方法。

 

 

@EqualsAndHashCode

註解在 類 上, 能夠生成 equals、canEqual、hashCode 方法。

 

 

@NonNull

註解在 屬性 上,會自動產生一個關於此參數的非空檢查,若是參數爲空,則拋出一個空指針異常,也會有一個默認的無參構造方法。

 

 

@Cleanup

這個註解用在 變量 前面,能夠保證此變量表明的資源會被自動關閉,默認是調用資源的 close() 方法,若是該資源有其它關閉方法,可以使用 @Cleanup(「methodName」) 來指定要調用的方法,也會生成默認的構造方法

 

 

@ToString

這個註解用在 類 上,能夠生成全部參數的 toString 方法,還會生成默認的構造方法。

 

 

@RequiredArgsConstructor

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

 

 

@Value

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

 

 

@SneakyThrows

這個註解用在 方法 上,能夠將方法中的代碼用 try-catch 語句包裹起來,捕獲異常並在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可使用 @SneakyThrows(Exception.class) 的形式指定拋出哪一種異常,也會生成默認的構造方法。

 

 

@Synchronized

這個註解用在 類方法 或者 實例方法 上,效果和 synchronized 關鍵字相同,區別在於鎖對象不一樣,對於類方法和實例方法,synchronized 關鍵字的鎖對象分別是類的 class 對象和 this 對象,而 @Synchronized 的鎖對象分別是 私有靜態 final 對象 lock 和 私有 final 對象 lock,固然,也能夠本身指定鎖對象,此外也提供默認的構造方法。

 

 

總結

以上註解可根據須要一塊兒搭配使用!

雖然說輪子好,可是咱們不只要知其然,也要知其因此然!

 

做者:zhisheng
連接: Lombok 看這篇就夠了 聲明:本文來源於極樂科技簽約博主:zhisheng,版權歸做者全部,轉載請註明做者與出處,謝謝!
相關文章
相關標籤/搜索