實際工作開發中,經常會涉及到一些調整很少但又必不可少的環節,比如實體類的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();
更多詳情可以參考官方網站: