官網連接:https://projectlombok.org/java
Lombok 是一個 Java 庫,它能夠經過添加註解的方式,爲 Java 類自動插入相應的 Getter/Setter,構造器,equals 方法等。這樣就省去了手動重建代碼的麻煩,簡化開發,也是代碼更爲簡潔。eclipse
固然,Lombok 也支持使用註解爲 Java 類添加 Builder,自動注入日誌記錄變量等。ide
優勢ui
顯然,使用 Lombok 能夠大量減小項目中的模版代碼。雖然開發過程當中能夠經過 IDE 快速生成這些代碼,但當 Java 類的變量發生變化,或者協做開發過程當中有代碼衝突,這無疑增長了咱們無謂的工做量。this
其次,Lombok 還能夠加強代碼的規範性,經過 @Data
註解能夠自動添加包括 toString 在內的模版方法,避免了這些方法缺失,也省去了因變量修改而修改 toString,equals 方法的麻煩。插件
缺點日誌
Lombok 的項目集成和使用,它須要 IDE 和項目都要支持。不過這不麻煩。code
IntelliJ IDEAxml
File/Setting
或 快捷鍵 Ctrl+Alt+S
Plugins
IntelliJ Lombok plugin
並安裝STS/Eclipse繼承
java -jar lombok.jar
,在彈出框中指定 STS/Eclipse 安裝目錄,點擊安裝-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
。
更多使用的用例,能夠查詢官網的詳細內容。