1. 程式人生 > >Lombok的使用詳解與外掛安裝

Lombok的使用詳解與外掛安裝

JAVA面向物件程式設計中的封閉性和安全性。封閉性即對類中的域變數進行封閉操作,即用private來修飾他們,如此一來其他類則不能對該變數訪問。這樣我們就將這些變數封閉在了類內部,這樣就提高了資料的安全性,當我們想要操作這些域變數怎麼辦呢?

     我們可以通過兩種方法,第一種即通過public方式的構造器(或稱建構函式),物件一例項化就對該變數賦值。第二種就是通過set和get方法進行賦值和取值,這樣就能提高域變數的安全性,同時又保證了域變數的封裝型。

     所以當我們建立POJO類時,都會毫不猶豫的讓開發工具對域變數生成set,get方法,雖然不是我們自己手動新增,但每個類都要做重複的生成操作,而且當變數名或者是修飾符改變了,我們就要刪除set,get方法重新生成。那麼我們怎麼做能提高生產效率,不做重複工作呢?對,就是lombok。

lombok

lombok 提供了簡單的註解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 java 程式碼。通過使用對應的註解,可以在編譯原始碼的時候生成對應的方法,所以不會影響任何執行效率。

常用的 lombok 註解:

@Data   :註解在類上;包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能,提供類所有屬性的 getter 和 setter 方法,此外還提供了equals、canEqual、hashCode、toString 方法

@Setter:註解在屬性上;為屬性提供 setter 方法

@Getter:註解在屬性上;為屬性提供 getter 方法

@ToString:註解在類上;生成toString()方法,預設情況下,它會按順序(以逗號分隔)列印你的類名稱以及每個欄位。可以這樣設定不包含哪些欄位@ToString(exclude = "id") / @ToString(exclude = {"id","name"})

如果繼承的有父類的話,可以設定callSuper 讓其呼叫父類的toString()方法,例如:@ToString(callSuper = true)

@EqualsAndHashCode:註解在類上;生成hashCode()和equals()方法,預設情況下,它將使用所有非靜態,非transient欄位。但可以通過在可選的exclude引數中來排除更多欄位。或者,通過在parameter引數中命名它們來準確指定希望使用哪些欄位。

@NonNull:  註解在屬性上;標識屬性是不能為空,為空則丟擲異常。

@Slf4j :註解在類上;根據使用者實際使用的日誌框架生成log日誌物件。

@Log4j :註解在類上;為類提供一個 屬性名為log 的 log4j 日誌物件

@NoArgsConstructor:註解在類上;為類提供一個無參的構造方法。當類中有final欄位沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然後就會為沒有初始化的final欄位設定預設值 0 / false / null。對於具有約束的欄位(例如@NonNull欄位),不會生成檢查或分配,因此請注意,正確初始化這些欄位之前,這些約束無效。

@AllArgsConstructor:註解在類上;為類提供一個全參的構造方法

預設生成的方法是public的,如果要修改方法修飾符可以設定AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)

@RequiredArgsConstructor:註解在類上;會生成構造方法(可能帶引數也可能不帶引數),如果帶引數,這引數只能是以final修飾的未經初始化的欄位,或者是以@NonNull註解的未經初始化的欄位@RequiredArgsConstructor(staticName = "of")會生成一個of()的靜態方法,並把構造方法設定為私有的。

安裝配置

加一些註解就能搞定很多事情,是不是很好用,既然很好用,花兩分鐘時間配置一下,不勉為其難吧。

一. 要使用註解,必須引入lombok提供的庫

maven引入依賴:

<dependency>    
    <groupId>org.projectlombok</groupId>    
    <artifactId>lombok</artifactId>    
    <version>1.16.18</version>
</dependency>

gradle引入依賴:

compile group: 'org.projectlombok', name: 'lombok', version: '1.16.18'

二. 開發工具外掛安裝

idea:

STS:

  1. 下載最新的lombok,https://projectlombok.org/download.html

  2.  切到lombok下載的目錄,執行命令: java -jar lombok.jar

切到sts的安裝目錄,驗證一下STS.ini檔案:

eclipse

eclipse安裝方式過程同STS,安裝完成之後,請確認eclipse安裝路徑下是否多了一個lombok.jar包,並且其配置檔案eclipse.ini中是否 添加了如下內容:     

    -javaagent:lombok.jar 

    -Xbootclasspath/a:lombok.jar 

在日常開發中,我們儘量少直接使用@Data註解

而是換成@Setter、@Getter、@NoArgsConstructor、@AllArgsConstructor、@ToString即可