推薦一款代碼神器,代碼量至少省一半!

在咱們 Java 項目裏面,有不少 Java Bean 須要爲每一個屬性生成 get/ set 方法,增刪改屬性都須要維護這些 get/ set 方法甚是麻煩。java

今天給你們介紹一款能幫助咱們簡化這些代碼的神器:Lombok!有了這個神器,你的 Java Bean 類的代碼量至少能夠省一半。spring

什麼是Lombok?

https://www.projectlombok.org/編輯器

打開它的官網,這是它的簡介。ide

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write another getter or equals method again. Early access to future java features such as val, and much more.spring-boot

翻譯過來就是說,Lombok項目是一個 Java 庫,它可以自動嵌入到你的 IDE 編輯器和編譯工具中。有了它,你不再用寫 getter 或者 equals 方法了,還有 val 特性等。工具

總之,有了這個傢伙,能夠省掉不少代碼的編寫,大大減小了工做量和維護的難度。開發工具

如何使用Lombok?

一、安裝插件和配置依賴

如上圖所示,Lombok支持全部主流的 IDE 開發工具及編譯構建工具。ui

在 IDEA 中安裝 Lombok 插件,這樣在使用 Lombok 的時候就不會編譯報錯。.net

下面是 Maven 的依賴配置,在用 Maven 打包的時候也能自動生成須要的代碼。插件

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

若是你使用了 Spring Boot,能夠不用帶版本號,在 Spring Boot spring-boot-dependencies.pom 這個配置文件裏面定義了 Lombok 依賴。

因此,你只須要繼承版本號便可,固然,有必要的話,你也能夠自定義版本號。

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

二、使用註解簡化代碼

從 IDEA 中的 Lombok 插件特性能夠看到支持的註解。

Features
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)

也能夠去 Lombok 對應的包裏面看全部支持的註解。

如今挑幾個講一下它們的用法吧!

@Getter 和 @Setter

@Getter
@Setter
public class User {
  
  private String name;
  
  private int age;
  
  ...
  
  // 無需生成 get/set 方法

}

添加 @Getter@Setter 註解用在 Java Bean 類上面,無需生成 get/ set 方法,會自動生成全部的 get/ set 方法及一個默認的構造方法。

也能夠用插件來添加相應的註解。

來看下源碼和生成後的代碼對比。

@Getter@Setter 註解也能夠單獨使用在字段上面,一樣也會生成對應的 get/ set 方法及一個默認的構造方法。

@ToString

使用在類上,默認生成全部非靜態字段如下面的格式輸出,如:

public String toString(){
    return "Person(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}

裏面也有不少參數,用來自定義輸出格式。

@NoArgsConstructor

用在類上,用來生成一個默認的無參構造方法。

@RequiredArgsConstructor

用在類上,使用類中全部帶有 @NonNull 註解和 final 類型的字段生成對應的構造方法。

@AllArgsConstructor

用在類上,生成一個全部參數的構造方法,默認不提供無參構造方法。

@Data

用在類上,等同於下面這幾個註解合集。

  • @Getter
  • @Setter
  • @RequiredArgsConstructor
  • @ToString
  • @EqualsAndHashCode

@Value

用在類上,等同於下面這幾個註解合集。

  • @Getter
  • @FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)
  • @AllArgsConstructor
  • @ToString @EqualsAndHashCode}

@NonNull

用在屬性上,用於字段的非空檢查,若是傳入到 set 方法中的值爲空,則拋出空指針異常,該註解也會生成一個默認的構造方法。

還有不少,這裏再也不撰述。

總結

本文介紹了 Lombok 及使用說明,更多的註解使用方式能夠去源碼裏面看吧,有了這個插件,能夠幫助你寫出更簡潔、更優雅、更漂亮的 Java 代碼。

更多好工具分享請關注公衆號:Java技術棧,在後臺回覆關鍵字:工具,能夠獲取獲取棧長整理的更多工具類乾貨。

本文原創首發於公衆號:Java技術棧(id:javastack),關注公衆號在後臺回覆 "工具" 可獲取更多,轉載請原樣保留本信息。

相關文章
相關標籤/搜索