日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小...

發布時間:2023/12/3 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

手動編譯 lombok

在本文中,我們將看到如何在常規Java代碼中使用lombok來最大程度地減少代碼長度和冗余。

什么是Lombok?

Lombok,一個編譯時注釋預處理器,有助于在編譯時注入一些代碼。 在詳細介紹之前,我要求您應該從他們的網站上觀看視頻。 我不會像這樣進行現場演示,但是我將展示如何在項目內部使用它(包括Maven生命周期)。

讓我們從基本的了解開始。 如我所知,lombok是一個編譯時注釋預處理器。 那是什么意思

->它將在編譯時起作用(我們可以在編寫代碼時看到效果)
->我們需要在編譯過程中使用類路徑進行依賴(使用javac命令執行)
->我們需要插件支持才能在編碼時看到IDE中的效果。(因為IDE在編碼/保存過程中會進行編譯)

Lombok有幾個實用程序/功能。 我們將介紹到目前為止我使用過的主要項目。

注意:要了解批注,您可能會看到我的這篇文章。

安裝方式

Eclipse:從此鏈接下載并安裝(您需要顯示eclipse安裝目錄)

(我已經檢查了STS / eclipse版本:3.7.3.RELEASE)

Intellij IDEA:只需安裝lombok插件。 (文件->設置->插件->搜索/瀏覽以查看,然后安裝)

或: 插件鏈接

現在:基于IDE行為,您可能需要啟用注釋預處理器才能使插件正常工作。 (通常現代IDE具有此默認設置)

從Eclipse:

IntelliJ IDEA:

項目設置:

我將使用Maven(您可以以相同的方式使用gradle)。 我的Maven版本是3.3.9。

步驟1:在pom.xml中,添加依賴項

dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.8</version></dependency> </dependencies>

您可能會從Maven Central獲得更新的版本。

步驟2:如我們所見,lombok是編譯時預處理器,因此,我們需要編譯器。 因此,在build-> plugins-> plugin內添加maven編譯器插件

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><compilerVersion>1.8</compilerVersion><source>1.8</source><target>1.8</target></configuration> </plugin>

可以看到,我已經將源和目標版本定義為1.8。

步驟3:現在我們需要添加lombok插件以在項目編譯期間工作。 為此,我們需要在插件管理中輸入內容,并在構建部分添加帶有參數的插件。

<pluginManagement><plugins><plugin><groupId>org.projectlombok</groupId><artifactId>lombok-maven-plugin</artifactId><version>1.16.8.0</version></plugin></plugins> </pluginManagement>

用參數添加插件

<plugin><groupId>org.projectlombok</groupId><artifactId>lombok-maven-plugin</artifactId><version>1.16.8.0</version><configuration><encoding>UTF-8</encoding></configuration><executions><execution><phase>generate-sources</phase><goals><goal>testDelombok</goal><goal>delombok</goal></goals></execution></executions> </plugin>

這里的空間說明:

1.編碼是必要的
2.您可以看到我使用了2個目標 ,這些是為測試和源范圍定義為lombok定義的空間目標。 我同時使用兩者,因為我的測試代碼也需要lombok。

因此,我的構建部分就是這個。

<build><pluginManagement><plugins><plugin><groupId>org.projectlombok</groupId><artifactId>lombok-maven-plugin</artifactId><version>1.16.8.0</version></plugin></plugins></pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><compilerVersion>1.8</compilerVersion><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.projectlombok</groupId><artifactId>lombok-maven-plugin</artifactId><version>1.16.8.0</version><configuration><encoding>UTF-8</encoding></configuration><executions><execution><phase>generate-sources</phase><goals><goal>testDelombok</goal><goal>delombok</goal></goals></execution></executions></plugin></plugins> </build>

并且,對于日志記錄,我們需要具有依賴性。 我將添加所有類型的日志示例。 所以將所有這些加在一起

<!--Logging external dependencies--><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version> </dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.21</version> </dependency> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version> </dependency> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-ext</artifactId><version>1.7.21</version> </dependency> <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.5</version> </dependency>

因此,最后我的POM的構建部分如下所示 。

現在,該看一下每個功能的用法了:

注意:對于eclipse和IntelliJ,我都使用“大綱視圖”來查看效果。 要啟用大綱:

Eclipse:窗口->顯示視圖->大綱

IntelliJ:查看->工具按鈕,將進行結構化。

@Getter @Setter:它使帶有變量的getter setter變得麻木。 它還支持訪問級別參數,以定義獲取器和設置器的范圍。

參數:采用枚舉參數AccessLevel
PUBLIC =公開可用
MODULE,PACKAGE =與默認值相同(不使用任何修飾符) 受保護=與受保護相同 私人=與私人相同 NONE =不會執行

在課堂上:

覆蓋類級別的getter: @ToString:這是toString()的實現,我們只能用于類級別。

參數:

includeFieldNames():布爾類型=>定義所有字段包含
callSuper():布爾類型=>調用super
doNotUseGetters():布爾類型=>避免使用字段的獲取器。 exclude():字段名稱的字符串數組=>定義字段排除 of():字段名稱的字符串數組=>定義要添加的字段(顯式)

@Data:它是多個注釋的組合。
哪里:我們可以在類/類型之前使用

參數:

注意:數據包括
1. @Getter,
2. @Setter。 3. @RequiredArgsConstructor 4. @Tostring 5. @EqualsAndHashCode

范例:

蝕:

IntelliJ:

@Value:這只是@Data的不變值類型。

參數:staticConstructor條目將默認構造函數設為私有

@Builder:在您的班級中添加默認的構建器類。 它只是一個構建器(如帶有參數的構建器模式,請參見圖像中的示例)

@Singular:用于通知集合(僅支持guava和Java util)。 它包括2種加法器方法,單次添加,全部添加。

val:這使局部最終變量(內部方法)

(緊接在this()或super()之后)

用途:

1.像var(js / c#)一樣使用,它將作為最終版本

2.在foreach循環中。

public class ValExample {val items;public void aMethod() {val store = new Hashtable<String, String>();store.put("one", new String("Shantonu"));val func = store.get("one");System.out.println(func.toLowerCase());store.put("two", "Andrii");store.put("three", "Oleks");for(val v: store.entrySet()){System.out.println("KEY =" +v.getKey()+", VAL = "+ v.getValue());}} }


@NotNull:這將對變量添加null檢查,并引發null指針異常。

使用范圍:方法,參數,局部變量

無需檢查

與@NotNull

@EqualsAndHashCode:它簡單地將equals(Object other)和hashCode()添加到類中。 (因此它是類級別的注釋)。

它支持用于自定義這些equals和哈希碼方法的參數。 所有參數均與@ToString相同。

@Cleanup:這是清除資源的簡單方法。 它實際上確保了資源的close()方法將在try的finally塊中被調用。

僅局部變量:

調用資源的關閉方法。 如果您有另一個方法名稱,則需要調用value = thatMehtodName(例如exit)

您可以從這里看到一個簡單的示例。 無需嘗試捕獲。

public class CleanupEx {public static void main(String[] args) throws IOException {String pom = System.getProperty("user.dir") + "/pom.xml";String io = System.getProperty("user.dir") + "/logs/io.txt";@Cleanup InputStream in = new FileInputStream(pom);@Cleanup OutputStream out = new FileOutputStream(io);int reading;char c;while ((reading=in.read())!=-1){c=(char)reading;out.write(c);}out.flush();} }

注意:我認為,當您不關心管理資源時,最好使用此功能。 如果您想按邏輯使用資源,最好避免這種情況。 例如,多線程資源的用法。

使用lombok記錄:

@log:這是最好的可用功能之一。 此圖顯示了要收集的所有記錄器。 我在github中的示例將顯示詳細信息。

我們需要在上課之前設置日志,僅此而已。 它會提供一個靜態變量日志,我們可以根據使用的日志類型來使用它。

Parameter:它將主題作為參數,默認情況下是類名。 我們可以設置日志主題。

注意:對于不同的日志實現,我們需要不同類型的配置。 Lombok不提供任何配置幫助,僅注入代碼。 因此,我們需要添加取決于我添加的日志類型。

我在github中的示例包含所有6種日志配置類型。 仔細查看pom文件以了解依賴關系以及配置文件的資源。

Lombok示例github鏈接 :https://github.com/sarkershantonu/practice-projects/tree/master/lombok-examples

注意:由于沒有測試范圍(空間@Synchronized),我跳過了更多常規功能和實驗功能。 我將在github存儲庫中一個接一個地添加其他內容,并在此處添加參考注釋。

翻譯自: https://www.javacodegeeks.com/2016/06/lombok-compile-time-java-annotation-preprocessor-minimize-code-size.html

手動編譯 lombok

總結

以上是生活随笔為你收集整理的手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。