Java編碼輔助工具:Lombok

實際工作開發中,經常會涉及到一些調整很少但又必不可少的環節,比如實體類的Getter/Setter方法,ToString方法等。這時可以使用Lombok來避免這種重複的操作,減少非核心代碼的臃腫,提高編碼效率

一、如何在IntelliJ IDEA中引入Lombok

  • 安裝Lombok 插件(否則在調用setter/getter方法時IDE會提示報錯): File -> Settings -> Plugins  搜索Lombok Plugin
  • pom.xml中引入lombok依賴(其中<scope>provided</scope>表示只在編譯、測試階段依賴該jar,運行階段不依賴(如運行容器中已包含了該jar,則置爲provided避免jar衝突),默認<scope>compile</scope>則表示在編譯、測試、運行階段都依賴
<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
</dependency>

二、常用註解

注意:Lombok中的註解一般都會包含一個無參構造函數註解@NoArgsConstructor(用於生成無參構造函數) ,所以還會額外生成一個無參構造函數

@Getter/@Setter

爲字段生成Getter和Setter方法,可以註解到字段或者類上(註解在類上會爲類中所有字段生成Getter和Setter方法)。默認是public類型的,如果需要的話可以修改方法的訪問級別: @Getter(AccessLevel.PROTECTED) 

@NonNull

調用字段的setter方法時,如果傳的參數爲null,則會拋出空異常NullPointerException,生成setter方法時會檢查參數是否爲空

@NoArgsConstructor

生成一個無參構造方法

@AllArgsConstructor

生成一個全參數的構造方法

@ToString

生成toString()方法,默認情況下它會按順序(以逗號分隔)打印你的類名稱以及每個字段

@EqualsAndHashCode

生成hashCode()和equals()方法,可以通過在可選的exclude參數中來排除更多字段或通過在of參數中命名它們來準確指定希望使用哪些字段。

// exclude 排除字段
@EqualsAndHashCode(exclude = {“password”, “salt”})
// of 指定要包含的字段
@EqualsAndHashCode(of = {“id”, “phone”, “password”})

@Data

包含了 @ToString、@EqualsAndHashCode、@Getter / @Setter和@RequiredArgsConstructor的功能

@Value

@Value 將字段都變成不可變類型:使用final修飾, 同時還包含@ToString、@EqualsAndHashCode、@AllArgsConstructor 、@Getter(注意只有Getter沒有Setter)

@Log

生成log對象,用於記錄日誌,可以通過topic屬性來設置getLogger(String name)方法的參數 例如 @Log4j(topic = “com.xxx.service.xxx”),默認是類的全限定名,即 類名.class,log支持以下幾種:

@Log              java.util.logging.Logger
@Log4j           org.apache.log4j.Logger
@Log4j2         org.apache.logging.log4j.Logger
@Slf4j             org.slf4j.Logger
@XSlf4j          org.slf4j.ext.XLogger
@CommonsLog     org.apache.commons.logging.Log
@JBossLog            org.jboss.logging.Logger

@Slf4j
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

@Synchronized

給方法加上同步鎖

@Cleanup

主要用來修飾 IO 流相關類, 會在 finally 代碼塊中對該資源進行 close();

 

更多詳情可以參考官方網站:

https://objectcomputing.com/resources/publications/sett/january-2010-reducing-boilerplate-code-with-project-lombok

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章