Lombok ——自动化方法生成器
引言
此文為簡單的Lombok 演示。
Lombok是一個可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java代碼的工具,通過使用對應的注解,可以在編譯源碼的時候生成對應的方法。簡而言之,一句話就是:通過簡單的注解來精簡代碼達到消除冗長代碼的目的。
官網:https://projectlombok.org/
GitHub:https://github.com/rzwitserloot/lombok
一、Lombok的優點
- 提高編碼效率
- 使代碼更簡潔
- 消除冗長代碼
- 避免修改字段名字時忘記修改方法名
二、如何使用
2.1 前期準備
在maven中央倉庫中搜索lombok依賴,官方說maven 倉庫和官方下載的jar包是一樣的,所以,我們只需要下載maven依賴即可:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope> </dependency>然后,我們還需要去本地倉庫雙擊jar 包安裝一下,這一步主要是對 IDE進行lombok 的插件安裝
安裝完成后,需要重啟 IDE,才能生效。
2.2 實際應用
首先,我們來創建一個實體類 Dept:
package com.group.coursesystem.entity;public class Dept {private int deptId;private String deptName;}使用Lombok 為我們提供的自動生成方法注解,觀察 Eclipse 中的 Outline 視圖:
無參構造器:
全參構造器:
get/set方法及 toString():
鏈式 set 方法設置:
三、代碼測試
構造器測試:
get/set 方法測試,set 方法為鏈式調用:
自動變更方法名:
四、常用注解
| @Getter / @Setter | 可以作用在類上和屬性上,放在類上,會對所有的非靜態(non-static)屬性生成Getter/Setter方法,放在屬性上,會對該屬性生成Getter/Setter方法。并可以使用該注解中的AccessLevel屬性來指定Getter/Setter方法的訪問級別。 |
| @ToString | 生成toString方法,默認情況下,會輸出類名、所有屬性,屬性會按照順序輸出,以逗號分割。可以使用該注解中的exclude屬性來指定生成的toSpring方法不包含對象中的哪些字段,或者使用of屬性來指定生成的toSpring方法只包含對象中的哪些字段 |
| @EqualsAndHashCode | 默認情況下,會使用所有非瞬態(non-transient)和非靜態(non-static)字段來生成equals和hascode方法,也可以使用exclude或of屬性。 |
| @NoArgsConstructor | 生成無參構造器 |
| @RequiredArgsConstructor | 會生成一個包含標識了@NonNull注解的變量的構造方法。生成的構造方法是private,如果想要對外提供使用的話,可以使用staticName選項生成一個static方法。 |
| @AllArgsConstructor | 生成全參構造器,當我們需要重載多個構造器的時候,Lombok就無能為力了。 |
| @Slf4j | 該注解是用來解決不用每次都寫?private static final Logger log = LoggerFactory.getLogger(XXX.class);?這句代碼的。使用的日志框架是LogBack,可以為類生成名為 log 的Slf4j 日志對象,該對象是 static final 的 |
| @Log4j | 該注解也是用來解決不用每次都寫日志對象聲明語句的,從字面上也可以看出,使用的日志框架是log4j |
| @Data | 該注解是 @ToString、@EqualsAndHashCode注解,和所有屬性的@Getter注解, 以及所有non-final屬性的@Setter注解的組合,通常情況下,我們使用這個注解就足夠了。 |
五、注意事項
注意,在Eclipse 或 IDEA 中,必須加入Lombok的插件,具體安裝方法是雙擊你的 Lombok.jar 包,其內部集成了自動安裝插件的程序,根據提示信息完成插件安裝(官方標準步驟)。
如果是 maven 依賴的jar ,就可以去本地倉庫中根據 GAV 坐標找到對應版本的 jar 包,如果是手動下載 jar包,也可以,它們是相同的,安裝過程很快,幾乎沒有什么明顯的提示,如果在會話框中看到"has installed" 字樣,說明安裝成功,成功后需要重啟 Eclipse 。
Lombok既是一個IDE插件,也是一個項目要依賴的jar包。Lombok是依賴jar包的原因是因為編譯時要用它的注解。是插件的原因是他要在編譯器編譯時通過操作AST(抽象語法樹)改變字節碼生成。也就是說他可以改變java語法.。他不像spring的依賴注入或者hibernate的orm一樣是運行時的特性,而是編譯時的特性。
另外,如果是 STS,官方說是可以支持,但是目前我的 STS 無法被 Lombok 檢測程序檢測到,因此無法安裝并使用。具體的表現形式是注解可以使用,但是沒有實際效果,或 Outline 視圖沒有變化(ps:很可能是因為我的STS是免安裝版/便攜版)。
注意,不必擔心Lombok 只會在開發中生效 運行期不生效的問題。
?
參考:
《Lombok快速入門》
《Lombok Project》
總結
以上是生活随笔為你收集整理的Lombok ——自动化方法生成器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis基础知识概述
- 下一篇: Maven学习(三)————Maven核