Lombok原理簡介

一、Lombok介紹

通過簡單註釋來精簡代碼來消除冗長代碼的目的。

二、Lombok優點

  • 提高代碼效率
  • 使代碼更簡潔
  • 消除冗長代碼
  • 避免修改字段名字時,忘記修改方法名(這是比較重要的一點)

例子:

public class lombok{
    private String name;
    public String getName(){
        return name;
    }
    public String setName(name){
        this.name = name;
    }
}

當我們修改字段名字而忘改方法名字時,如下:

public class lombok{
    private String userName;
    public String getName(){
        return userName;
    }
    public String setName(name){
        this.userName = name;
    }
}

字段名改成了userName,但方法名仍沒變,在進行jackson序列化的時候很容易出錯,如果我們不寫字段名,我們存在get方法,當對象序列化成json對象後,字段名字爲name。跟我們目的是不一樣的,若不用lombok的話,此處是需要用改爲getUserName()和setUserName()方法。

三、使用方法

IDEA上安裝Lombok插件,同時Maven中引入Lombok依賴,然後在目標類上標識好相應的Lombok@註解即可,如在類上標記@Data,@Getter,@Setter等。

四、Lombok實現原理

Lombok支持了JSR 269 Pluable Annotation Processing API(JSR 269 可插入註解過程接口),Javac從Java6 開始支持JSR 269 API 規範,只要程序實現了該API就能在javac運行的時候得到調用。而Lombok實現了JSR 269 API ,在編譯時,Javac編譯源碼的具體流程如下:
Lombok修改代碼的過程
首先有源代碼,javac對源代碼進行分析,生成一棵抽象語法樹AST,運行過程中調用了實現了JSR 269 API 規範的Lombok程序,即Lombok Annotation Proceesor (Lombok 註解的處理器)。這時候,Lombok Annotation Processor對剛剛生成的AST進行處理,交遞給Lombok Annotation Handler,Lombok Annotation Handler負責找到Lombok註解所在的類對應的語法樹,然後修改該語法樹(修改的內容爲在AST中增加了set get 或其他方法定義的相應樹節點),Lombok Annotation Processor這個處理器之後輸出修改後的抽象語法樹,拿到修改後的語法樹後,最後進行解析和生成字節碼文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章