什么是Lombok?


  官方介紹——Lombok項目是一個Java庫,它會自動插入您的編輯器和構建工具中,從而為您的Java增光添彩。永遠不要再寫另一個getter或equals方法,帶有一個注釋的您的類有一個功能全面的生成器,自動化您的日志記錄變量等等。理解一下,使用Lombok,通過注解類,讓你不再需要編寫getter、equals等方法,減少樣板代碼的編寫。

 

lombok的官方地址:https://projectlombok.org/

 

lombok的Github地址:https://github.com/rzwitserloot/lombok

 

  Lombok的使用:

、引入Lombok jar包

 

 

 Lombok的scope=provided,說明它只在編譯階段生效,不需要打入包中。事實正是如此,Lombok在編譯期將帶Lombok注解的Java文件正確編譯為完整的Class文件。

 

、開發工具中下載Lombok插件

  ide下載插件后在開發階段ide可以識別Lombok注釋,從而不會報錯

安裝方法:點擊File-- Settings設置界面,安裝Lombok插件:

 

 

 

 點擊File-- Settings設置界面,開啟 AnnocationProcessors:

 

   開啟該項是為了讓Lombok注解在編譯階段起到作用。

、Lombok的實現原理

  自從Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”規范,只要程序實現了該API,就能在javac運行的時候得到調用。Lombok就是一個實現了"JSR 269 API"的程序。

具體流程:

  1. javac對源代碼進行分析,生成一棵抽象語法樹(AST)

  2. javac編譯過程中調用實現了JSR 269的Lombok程序

  3. 此時Lombok就對第一步驟得到的AST進行處理,找到Lombok注解所在類對應的語法樹 (AST),然后修改該語法樹(AST),增加Lombok注解定義的相應樹節點

  4. javac使用修改后的抽象語法樹(AST)生成字節碼文件,生成對應類中的getter或者setter方法

、Lombok注解的使用

   Lombok主要常用的注解有:@Data,@getter,@setter,@NoArgsConstructor,@AllArgsConstructor,@ToString,@EqualsAndHashCode,@Slf4j,@Log4j等。

  @Data注解:在JavaBean或類JavaBean中使用,這個注解包含范圍最廣,它包含getter、setter、NoArgsConstructor注解,即當使用當前注解時,會自動生成包含的所有方法;

  @getter注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應的getter方法;

  @setter注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應的setter方法;

  @NoArgsConstructor注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應的無參構造方法;

  @AllArgsConstructor注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應的有參構造方法;

  @ToString注解:在JavaBean或類JavaBean中使用,使用此注解會自動重寫對應的toStirng方法;

  @EqualsAndHashCode:作用於類,覆蓋默認的equals和hashCode

  @NonNull:主要作用於成員變量和參數中,標識不能為空,否則拋出空指針異常。

  @Builder:作用於類上,將類轉變為建造者模式

  @Cleanup:自動關閉資源,針對實現了java.io.Closeable接口的對象有效,如:典型的IO流對象

  @EqualsAndHashCode注解:在JavaBean或類JavaBean中使用,使用此注解會自動重寫對應的equals方法和hashCode方法;

  @Slf4j:在需要打印日志的類中使用,當項目中使用了slf4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調用info方法即可;

  @Log4j:在需要打印日志的類中使用,當項目中使用了log4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調用info方法即可;

  在使用以上注解需要處理參數時,處理方法如下(以@ToString注解為例,其他注解同@ToString注解):

  @ToString(exclude="column")

  意義:排除column列所對應的元素,即在生成toString方法時不包含column參數;

  @ToString(exclude={"column1","column2"})

  意義:排除多個column列所對應的元素,其中間用英文狀態下的逗號進行分割,即在生成toString方法時不包含多個column參數;

  @ToString(of="column")

  意義:只生成包含column列所對應的元素的參數的toString方法,即在生成toString方法時只包含column參數;;

  @ToString(of={"column1","column2"})

  意義:只生成包含多個column列所對應的元素的參數的toString方法,其中間用英文狀態下的逗號進行分割,即在生成toString方法時只包含多個column參數;

 


參考鏈接:https://blog.csdn.net/qq_36314960/java/article/details/79565899

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM