在咱們 Java 項目裏面,有不少 Java Bean 須要爲每一個屬性生成 get/ set 方法,增刪改屬性都須要維護這些 get/ set 方法甚是麻煩。java
今天給你們介紹一款能幫助咱們簡化這些代碼的神器:Lombok!有了這個神器,你的 Java Bean 類的代碼量至少能夠省一半。spring
打開它的官網,這是它的簡介。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支持全部主流的 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
用在類上,等同於下面這幾個註解合集。
@Value
用在類上,等同於下面這幾個註解合集。
@NonNull
用在屬性上,用於字段的非空檢查,若是傳入到 set 方法中的值爲空,則拋出空指針異常,該註解也會生成一個默認的構造方法。
還有不少,這裏再也不撰述。
本文介紹了 Lombok 及使用說明,更多的註解使用方式能夠去源碼裏面看吧,有了這個插件,能夠幫助你寫出更簡潔、更優雅、更漂亮的 Java 代碼。
更多好工具分享請關注公衆號:Java技術棧,在後臺回覆關鍵字:工具,能夠獲取獲取棧長整理的更多工具類乾貨。
本文原創首發於公衆號:Java技術棧(id:javastack),關注公衆號在後臺回覆 "工具" 可獲取更多,轉載請原樣保留本信息。