Lombok介紹,使用方法及原理

Bug如風常伴吾身發表於2018-01-22

Lombok介紹,使用方法及原理

Lombok 是一個自動插入編輯器和構建工具的Java庫。它提供了簡單的註解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 java 程式碼。

官方首頁:https://projectlombok.org/
下載位置:https://projectlombok.org/download
註解介紹:https://projectlombok.org/features/all
GitHub : https://github.com/rzwitserloot/lombok


常用註解介紹

@Data :註解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法
@Setter:註解在屬性上;為屬性提供 setting 方法
@Getter:註解在屬性上;為屬性提供 getting 方法
@Log4j :註解在類上;為類提供一個 屬性名為log 的 log4j 日誌物件
@Slf4j : 註解在類上;為類提供一個 屬性名為log 的 log4j 日誌物件
@NoArgsConstructor:註解在類上;為類提供一個無參的構造方法
@AllArgsConstructor:註解在類上;為類提供一個全參的構造方法 所有引數
@NonNull: 註解在屬性上,用來校驗引數
@Getter @Setter:分別為屬性新增get/set方法

public class Person {
    private String id;
    private Logger log = Logger.getLogger(Person.class);

    public Person() {
    }
    public Person(String id) {
        this.id = id;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
}

上述程式碼使用lombok可以這樣寫

@Log4j
@NoArgsConstructor
@AllArgsConstructor
public class Person {
  @Getter @Setter private String id;
}

稍微介紹一下,細節有位大佬已經在簡書上描述的很明白了。

安裝及使用教程

安裝

一、Eclipse/My Eclipse安裝lombok

使用 lombok 是需要安裝的,如果不安裝,IDE 則無法解析 lombok 註解。
1. 先在官網下載最新版本的 JAR 包,我目前是1.16版
這裡寫圖片描述
2. 雙擊下載下來的 JAR 包安裝 lombok,或者使用命令列 java -jar lombok.jar
3. 勾選要安裝的eclipse/my eclipse 單擊install/update按鈕
這裡寫圖片描述
如果上述方法不可行,可嘗試以下方法:
1. 將 lombok.jar複製到myeclipse.ini / eclipse.ini所在的資料夾目錄下
2. 開啟 eclipse.ini / myeclipse.ini,在最後面插入以下兩行並儲存:

-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar

3.重啟 eclipse / myeclipse

二、IDEA 安裝lombok

  1. 新增外掛Files->settings->plugins
  2. 點選按鈕【Install JetBrains plugin…】
  3. 在新彈出的視窗,搜尋lombok,在搜尋到的lombok上右鍵安裝就可以了

三、Maven依賴

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven</artifactId>
    <version>1.16.20.0</version>
    <type>pom</type>
</dependency>

使用

  1. 在需要安裝Lombok的工程下加入lombok.jar包
  2. 在需要的類上或屬性上面加入想要的註解

原理解釋

lombok本質上就是這樣的一個實現了”JSR 269 API可以參考這個)”的程式。在使用javac的過程中,它產生作用的具體流程如下:
1. javac對原始碼進行分析,生成一棵抽象語法樹(AST)。
2. 執行過程中呼叫實現了”JSR 269 API”的lombok程式。
3. 此時lombok就對第一步驟得到的AST進行處理,找到註解所在類或者屬性對應的語法樹(AST),然後修改該語法樹(AST),增加註解所定義的相應樹節點。
4. javac使用修改後的抽象語法樹(AST)生成位元組碼檔案。

總結

使用lombok省略了一系列的繁雜的方法定義,開發時間更短,提高了程式碼的簡潔性,同時也降低了程式碼的完整性和可讀性,使用lombok需要考慮清楚其利弊。據我所知,weixin-java-toolsElastic-Job使用了此JAVA庫。

參考文章

http://blog.csdn.net/dslztx/article/details/46715803

相關文章