前提
自從進公司實習後,項目代碼中能用 Lombok 的都用了,畢竟這麼好的輪子要充分利用好。也可以減少一些 get/set/toString 方法的編寫,雖說 IDEA 的插件可以自動生成 get/set/toString 方法,但是使用 Lombok 可以讓代碼更簡潔。
下面看看如何在 IDEA 中如何安裝 Lombok:
安裝
打開 IDEA 的 Settings 面板,並選擇 Plugins 選項,然後點擊 “Browse repositories”
在輸入框輸入”lombok”,得到搜索結果,點擊安裝,然後安裝提示重啓 IDEA,安裝成功;
引入依賴
在自己的項目裏添加 lombok 的編譯支持,在 pom 文件裏面添加 dependency
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
怎麼使用?
在實體類上引入相關的註解就行:
有哪些註解?
- @Data
- @Setter
- @Getter
- @Log4j
- @AllArgsConstructor
- @NoArgsConstructor
- @EqualsAndHashCode
- @NonNull
- @Cleanup
- @ToString
- @RequiredArgsConstructor
- @Value
- @SneakyThrows
- @Synchronized
註解詳解
@Data
註解在 類 上;提供類所有屬性的 get 和 set 方法,此外還提供了equals、canEqual、hashCode、toString 方法。
@Setter
註解在 屬性 上;爲單個屬性提供 set 方法; 註解在 類 上,爲該類所有的屬性提供 set 方法, 都提供默認構造方法。
@Getter
註解在 屬性 上;爲單個屬性提供 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,當然,也可以自己指定鎖對象,此外也提供默認的構造方法。
總結
以上註解可根據需要一起搭配使用!
雖說輪子好,但是我們不僅要知其然,也要知其所以然!