Lombok外掛常用註解
Lombok
是一種 Java™
實用工具,可用來幫助開發人員消除 Java 的冗長,尤其是對於簡單的 Java 物件(POJO)。它通過註解實現這一目的。
1、Lombok註解概覽
Lombok是一個通過註解形式幫助構造簡潔、規範的Java程式碼的工具,通過使用對應的註解,可以在編譯原始碼的時候生成對應的方法。
下載地址:
github地址:https://github.com/rzwitserloot/lombok
官方地址:https://projectlombok.org/
官方API : https://projectlombok.org/features/all
jar包下載路徑:https://projectlombok.org/download
2、新增依賴
<lombok.version>1.16.20</lombok.version> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency>
3、安裝外掛(idea)
由於 Lombok
採取的註解形式的,在編譯後,自動生成相應的方法,為了不讓 ide 瘋了,需要下載外掛了支援它。
以 idea 為例:查詢外掛 lombok plugin
安裝即可。
注:在eclipse上無需安裝,直接匯入jar包使用即可。
若在eclipse中用到lombok.jar裡@Data @NoArgsConstructor @AllArgsConstructor三個註解的時候報錯。
詳見:https://blog.csdn.net/icecoola_/article/details/77414572
- 1、在eclipse安裝目錄下,找到eclipse.ini檔案並修改,即在檔案內容後面綴上:
-javaagent:[lombok.jar所在路徑]
-Xbootclasspath/a:[lombok.jar所在路徑]
- 2、開啟命令視窗cmd,輸入:java -jar [lombok.jar所在路徑]
重啟eclipse即可。
4、常用註解介紹
1、@NoArgsConstructor :
生成一個無引數的構造方法。
2、@AllArgsContructor:
會生成一個包含所有變數的帶參構造方法。
@RequiredArgsConstructor: 會生成一個包含常量,和標識了NotNull的變數的構造方法。生成的構造方法是私有的private。
3、@Data:
使用 @Data
註解就可以有下面幾個註解的功能: @ToString
、@Getter
、@Setter
、@EqualsAndHashCode
、@NoArgsConstructor
。
注意:同時使用@Data
和 @AllArgsConstructor
後 ,預設的無參建構函式失效,如果需要它,要重新設定@NoArgsConstructor。
4、@Getter and @Setter
可以用@Getter / @Setter註釋欄位(也可以註釋到類上的—(在實體類中常用且推薦)),lombok會自動生成預設的Getter/Setter方法。
5、@ToString
自動生成toString()方法,預設情況,按順序(以“,”分隔)列印你的類名稱以及每個欄位。也可以設定不包含哪些欄位/@ToString(exclude = {“id”,”name”})
6、@Synchronized:
方法中所有的程式碼都加入到一個程式碼塊中,預設靜態方法使用的是全域性鎖,普通方法使用的是物件鎖,當然也可以指定鎖的物件。
private final Object lock = new Object();
@Synchronized("lock")
public void foo() {
// Do something
}
@Synchronized給方法加上同步鎖,建議實際開發直接寫在程式碼中Synchronized
7、@Accessors
註解用來配置lombok如何產生和顯示getters和setters的方法。
支援的配置關鍵字:
lombok.assessors.chain=[true|false](default:false)
如果設定為true,沒有任何類被@Accessors註解,或者有類被註解但是沒有為chain引數顯式賦值,則表現為@Accessors(chain=true)
lombok.accessors.fluent=[ true | false](default:false)
如果設定為真,沒有任何類被@Accessors註解,或者有類被註解對fluent引數沒有顯式賦值,則表現為@Accessors(fluent=true)
lombok.accessors.prefix+=afield prefix(default:empty list)
這是一個列表屬性;條目可以通過 +=操作符新增。從父配置檔案繼承的字首可以通過-=操作符移除。沒有任何類被@Accessors註解,或者有類被註解但是註解對prefix引數顯式的賦值,則表現為
@Accessors(prefix={prefixes listed in configuration})
lombok.accessors.flagUsage=[warning | error](default:not set)
如果配置了,lombok標出每個使用了@Accessors註解為一個警告還是一個錯誤。
5、實際使用
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@NoArgsConstructor //生成一個無引數的構造方法
@AllArgsConstructor //會生成一個包含所有變數的構造方法
@Data //@Data 註解就可以有下面幾個註解的功能: @ToString、@Getter、@Setter、@EqualsAndHashCode、@NoArgsConstructor
//注意的是,同時使用@Data 和 @AllArgsConstructor 後 ,預設的無參建構函式失效,如果需要它,要重新設定 @NoArgsConstructors
@Accessors(chain=true) //用來配置lombok如何產生和顯示getters和setters的方法
@ToString
public class Dept implements Serializable {
private Long deptno; // 主鍵
private String dname; // 部門名稱
private String db_source;// 來自那個資料庫,因為微服務架構可以一個服務對應一個數據庫,同一個資訊被儲存到不同資料庫
}