SpringBoot - 第十二章| Lombok簡單介紹使用

文章推薦指數: 80 %
投票人數:10人

Project Lombok是一個java庫,可以自動插入編輯器並構建工具,為你的java ... package com.jj.learning.springboot.chapter12.model; import lombok. Thiswebsite Archives Categories Tags About RSS 歡迎!您似乎正在使用廣告攔截器。

請考慮通過禁用您的廣告攔截器來支持我。

J.J.Huang   2019-03-22   SpringBoot   瀏覽次數:次 {{moment(1553217000000).fromNow()}} SpringBoot-第十二章|Lombok簡單介紹使用 在開發過程中,通常都會定義大量的JavaBean,然後通過IDE去產生其屬性的構造器、getter、setter、equals、hashcode、toString方法,當要增加屬性或者對某個屬性進行改變時,比如命名、類型等,都需要重新去產生上面提到的這些方法。

這樣重複的勞動沒有任何意義,Lombok裡面的註解可以輕鬆解決這些問題。

Lombok介紹ProjectLombok是一個java庫,可以自動插入編輯器並構建工具,為你的java增添色彩。

永遠不要再寫另一個getter或equals方法,使用一個註釋,你的類具有一個功能齊全的構建器,自動化你的日誌記錄變量等等。

官方地址:https://projectlombok.org/ github地址:https://github.com/rzwitserloot/lombok lombok實現的原理:主要是通過抽象語法樹(AST),在編譯處理後,對應到有其註解的類,那麼註解編譯器就會自動去對應項目中的註解對應到在lombok語法樹中的註解文件,並經過自動編譯對應來產生對應類中的getter或者setter方法,達到簡化代碼的目的 MacEclipse安裝Lombok 下載lombok.jar 將lombok.jar放置與eclipse.ini同級的目錄 編輯eclipse.ini,在最後加上(注意路徑正確性) 1-javaagent:/Applications/Eclipse.app/Contents/Eclipse/lombok.jar 重新啟動Eclipse,並確認是否成功安裝 網路上很有針對其他系統的Eclipse安裝Lombok的文章,這邊就不再額外提供教學 Lombok的簡單使用Lombok需要引入下面依賴123456 org.projectlombok lombok 1.18.6 provided Lombok常用的註解介紹 註解 說明 Val 可以將變量申明是final類型 @NonNull 註解能夠為方法或構造函數的參數提供非空檢查 @Cleanup 註解能夠自動釋放資源 @Getter/@Setter 註解可以針對類的屬性字段自動產生Get/Set方法 @ToString 註解,為使用該註解的類產生一個toString方法,默認的toString格式為:ClassName(fieldName=fieleValue,fieldName1=fieleValue) @EqualsAndHashCode 註解,為使用該註解的類自動產生equals和hashCode方法 @NoArgsConstructor,@RequiredArgsConstructorand@AllArgsConstructor 這幾個註解分別為類自動產生了無參構造器、指定參數的構造器和包含所有參數的構造器 @Data 註解作用比較全,其包含註解的集合@ToString,@EqualsAndHashCode,所有字段的@Getter和所有非final字段的@Setter,@RequiredArgsConstructor @Builder 註解提供了一種比較推崇的構建值對象的方式 @Synchronized 註解類似Java中的Synchronized關鍵字,但是可以隱藏同步鎖 @Log 註解適用於你使用的日誌系統;然後,你有一個靜態的finallog字段,初始化為你的類的名稱,然後你可以使用它來編寫日誌語句 Lombok基本使用範例基本上官方網站已經提供了相當多的範例代碼,這邊僅做簡單的使用範例。

使用Lombok 等同於 撰寫CustomerController 啟動應用,並瀏覽http://localhost:8080/customer?id=1&name=J.J.Huang&age=18 12345ID:1Name:J.J.HuangAge:18ToString:Customer(id=1,name=J.J.Huang,age=18)HashCode:747381461 可見Customer裡面,我們並沒有去寫get/set的方法,但是使用Lombok後,因為他會自己去產生相對應的方法讓我們去使用 Lombok原理提到Lombok,我們就得去提到JSR269:PluggableAnnotationProcessingAPI。

JSR269之前我們也有註解這樣的神器,可是我們比如想要做什麼必須使用反射,反射的方法局限性較大。

首先,它必須定義@Retention為RetentionPolicy.RUNTIME,只能在運行時通過反射來獲取註解值,使得運行時代碼效率降低。

其次,如果想在編譯階段利用註解來進行一些檢查,對用戶的某些不合理代碼給出錯誤報告,反射的使用方法就無能為力了。

而JSR269之後我們可以在Javac的編譯期利用註解做這些事情。

從上圖可知,AnnotationProcessing是在解析和產生之間的一個步驟 從上面的Lombok執行的流程圖中可以看出,在Javac解析成AST抽象語法樹之後,Lombok根據自己編寫的註解處理器,動態地修改AST,增加新的節點(即Lombok自定義註解所需要產生的代碼),最終通過分析產生JVM可執行的字節碼類文件。

使用註釋處理自定義註解是在編譯階段進行修改,而JDK的反射技術是在運行時動態修改,兩者相比,反射雖然更加靈活一些但是帶來的性能損耗更加大 SpringBoot-第十一章|多環境配置 Docker-第一章|簡介



請為這篇文章評分?