提升java開發(fā)效率工具lombok使用爭議
引言
對使用 lombok 還是有很多爭議的,有些公司不建議使用,有些公司又大量使用。

我們的想法是:可以使用,但是不要濫用。
什么是 lombok
Lombok是 一種Java™實用工具,可用來幫助開發(fā)人員消除Java的冗長代碼,尤其是對于簡單的Java對象(POJO) 。 它通過注釋實現(xiàn)這一目的。 通過在開發(fā)環(huán)境中實現(xiàn)Lombok,開發(fā)人員可以節(jié)省構(gòu)建諸如hashCode() 和 equals()這樣的方法以及以往用來分類各種 accessor和 mutator的大量時間。
我們都知道使用 Java 定義對象的時候都會用到 Getter 和 Setter 方法。
雖然我們有工具幫我們快速生成這些方法,但是實際上還是有點麻煩。
lombok 就可以通過一行注釋來實現(xiàn)所有的這些方法。
lombok 可以做的不僅僅是這個,還可以通過注釋 @Slf4j 來幫你實現(xiàn)自動定義 log。
我們就不用寫冗長的
private static final Logger logger = LoggerFactory.getLogger(ListingProcessor.class)
而且針對 log 的類不同,這句話也是不同的。
如何使用
如果使用 Maven 的話,直接添加下面的依賴到 pom 文件中就可以了。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
IDEA 的插件是自動安裝的,你直接啟用就可以了。
IDEA 會提示你是不是在當前的項目中啟用 lombok,你可以選擇啟用或者不啟用。

隨后就是在代碼中使用注釋就可以了。
如下面的代碼,我們直接簡化使用注解就可以了。

需要注意的是,使用 log 來標記日志。

這樣看起來,代碼就優(yōu)雅很多,也能減少不少不需要的代碼。
lombok 的原理和濫用
Java 程序的解析分為:運行時解析 和 編譯時解析。
通常我們通過反射獲取類、方法、注解和成員變量就是運行時解析。但是這種方式效率其實不高,要在程序運行起來才能解析。
這時候編譯時解析就體現(xiàn)出它的價值了。
編譯時解析又分為:注解處理器(Annotation Processing Tool)和JSR 269 插入式注解處理器(Pluggable Annotation Processing API)
第一種處理器它最早是在 JDK 1.5 與注解(Annotation) 一起引入的,它是一個命令行工具,能夠提供構(gòu)建時基于源代碼對程序結(jié)構(gòu)的讀取功能,能夠通過運行注解處理器來生成新的中間文件,進而影響編譯過程。
不過在JDK 1.8以后,第一種處理器被淘汰了,取而代之的是第二種處理器。
這樣就導致了 lombok 對 JDK 的兼容性出現(xiàn)了一些問題。
當你更換 JDK 版本的時候,lombok 的版本也需要一并進行更換,否則你就會出現(xiàn)錯誤。
如果下面文章討論的錯誤: Java 項目編譯錯誤 Error:java: java.lang.ExceptionInInitializer
就是因為 JDK 不兼容的問題導致的整個項目無法編譯。
如果上游系統(tǒng)中提供的fegin client 使用了 lombok,那么下游系統(tǒng)必須也使用 lombok,否則會報錯,上下游系統(tǒng)構(gòu)成了強依賴。
如果你需要對 getter 或者 setter 方法進行一些編碼的話,lombok 也不是不能用,但是會有一點點的學習曲線。
綜合上面的考慮, lombok 還是可以用的,但是不要嘗試所有地方都用 lombok,避免濫用。
哪怕就是為了使用 @Slf4j 來考慮的話,也是值得的。
以上就是提升java開發(fā)效率工具lombok使用爭議的詳細內(nèi)容,更多關(guān)于java開發(fā)工具lombok的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實現(xiàn)List集合轉(zhuǎn)樹形結(jié)構(gòu)的示例詳解
在開發(fā)中,我們通常需要將從數(shù)據(jù)庫中查詢的集合數(shù)據(jù)轉(zhuǎn)換成類似文件系統(tǒng)一樣的樹形集合。本文將利用Java語言實現(xiàn)這一功能,感興趣的可以了解一下2022-08-08
Spring Cloud Alibaba Nacos Config加載配置詳解流
這篇文章主要介紹了Spring Cloud Alibaba Nacos Config配置中心實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-07-07
Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解
這篇文章主要為大家介紹了Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同
這篇文章主要介紹了java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同的相關(guān)資料,需要的朋友可以參考下2017-01-01

