Lombok

官網連接:https://projectlombok.org/java

什麼是 Lombok

Lombok 是一個 Java 庫,它能夠經過添加註解的方式,爲 Java 類自動插入相應的 Getter/Setter,構造器,equals 方法等。這樣就省去了手動重建代碼的麻煩,簡化開發,也是代碼更爲簡潔。eclipse

固然,Lombok 也支持使用註解爲 Java 類添加 Builder,自動注入日誌記錄變量等。ide

爲何使用 Lombok (優劣)

優勢ui

顯然,使用 Lombok 能夠大量減小項目中的模版代碼。雖然開發過程當中能夠經過 IDE 快速生成這些代碼,但當 Java 類的變量發生變化,或者協做開發過程當中有代碼衝突,這無疑增長了咱們無謂的工做量。this

其次,Lombok 還能夠加強代碼的規範性,經過 @Data 註解能夠自動添加包括 toString 在內的模版方法,避免了這些方法缺失,也省去了因變量修改而修改 toString,equals 方法的麻煩。插件

缺點日誌

Lombok 的項目集成和使用,它須要 IDE 和項目都要支持。不過這不麻煩。code

安裝

IntelliJ IDEAxml

  1. 打開 File/Setting 或 快捷鍵 Ctrl+Alt+S
  2. 選擇 Plugins
  3. 搜索插件 IntelliJ Lombok plugin 並安裝
  4. 重啓 IDEA 即完成

STS/Eclipse繼承

  1. 下載 lombok.jar
  2. 將 lombok.jar 放在sts(eclipse)安裝目錄下,和 sts.ini 文件平級的
  3. 在lombok.jar 的目錄下,運行:java -jar lombok.jar,在彈出框中指定 STS/Eclipse 安裝目錄,點擊安裝
  4. 查看 sts.ini,正常狀況應該多個一行配置:-javaagent:XXX\lombok.jar

依賴添加

<lombok.version>1.18.6</lombok.version>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
    <scope>provided</scope>
</dependency>

使用介紹

按使用頻率從上及下排列

@Data

@Data@ToString@EqualsAndHashCode,全部字段上加@Getter,全部非 final 字段加@Setter@RequiredArgsConstructor的快捷方式。它提供了這些註解的默認配置,用於知足最基本 Java 類配置。

注意:@Data 註解時,以 $- 開頭的字段不會被自動注入對應方法,包括 @Getter, @Setter, @ToString和@EqualsAndHashCode 內不會包含這個字段。

@Getter @Setter

給字段添加 Getter/Setter 方法,能夠添加到類或字段上。若是同時添加,以字段上的配置爲準。但都會被顯示聲明的方法覆蓋。

對於一些 boolean 類型的字段,須要注意 is- 開頭的字段。但對於引用類型 Boolean 無此影響。

@Getter @Setter public boolean isFlower;
@Getter @Setter public Boolean isTree;
// getter
public boolean isFlower() { return this.isFlower; };
// setter
public void setFlower(boolean isFlower) {
    this.isFlower = isFlower;
}
// getter
public boolean getIsTree() { return this.isTree; };
// setter
public void setIsTree(boolean isTree) {
    this.isTree = isTree;
}

@Getter 和 @Setter 能夠經過指定 PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE, NONE 設置訪問權限。

@ToString

添加 toString 方法。

注意,若是一個類繼承父類,默認插入的 toString 是不會添加父類字段。要添加父類的字段,須要使用 @ToString(callSuper = true)

去除字段名,能夠設置 includeFieldNames = false 默認爲true

屏蔽字段,能夠在字段聲明時添加 @ToString.Exclude

@ToString.Exclude private String name;

@EqualsAndHashCode

添加 equals hashCode 方法。

默認狀況下,任何以$符號開頭的變量都會自動排除。只能經過標記來包含它們@EqualsAndHashCode.Include

@EqualsAndHashCode.Exclude 用來屏蔽指定字段。

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

添加構造方法。

設置 access = AccessLevel.PRIVATE 能夠指定構造方法的訪問權限。權限包括(PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE, NONE),默認 PUBLIC。

@AllArgsConstructor 會替換掉默認的無參構造方法。如需同時存在無參構造方法和有參構造方法,能夠同時添加 @NoArgsConstructor

注意事項

  1. 優先級:顯示聲明>字段上加註解>類上加註解

更多使用的用例,能夠查詢官網的詳細內容。

相關文章
相關標籤/搜索