1. 程式人生 > >Lombok外掛常用註解

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;// 來自那個資料庫,因為微服務架構可以一個服務對應一個數據庫,同一個資訊被儲存到不同資料庫

}