標籤:java lombok 代碼冗餘
前言:
現在是ORM架構大行其道的時代,有著如Hibernate這樣重量級的架構,提供Java<->資料的雙向映射,也有如Mybatis這樣的輕量級架構,提供Java<-資料的單方向映射,
無論使用的是哪種流行的架構,在其中都少不了Model類的編寫,還有其中錯綜負責的getter/setter方法,這些getter/setter方法的存在,使得代碼變得非常的臃腫。那麼需要怎
麼解決這個問題呢,便引入了這篇文章的主角Lombok。
1.下載:
Lombok的官網地址是:http://projectlombok.org/
2.使用:
Lombok是一種JavaArchive(jar)檔案,旨在為了減少編碼時的冗餘。
自動安裝方法:
直接運行lombok.jar檔案,首先要確保機器的Java環境已正常配置,在自動安裝完成後,會達到和手動安裝一樣的效果。
手動安裝方法:
1.將lombok.jar複製到myeclipse.ini/eclipse.ini所在的檔案目錄中。
2.開啟 eclipse.ini / myeclipse.ini,在最後面插入以下兩行並儲存:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
3.重啟 myeclipse/eclipse
註:這是官方提供的一種安裝方式,當使用的是myeclipse時,按照上述方法時不能正常使用的,需要將myeclipse的可執行檔名稱由myeclipse.exe更改為
eclipse.exe,此時才可以正常使用(具體原因是不是因為lombok在內部指定了一些常量,還未定)。
IDE中使用步驟:
按照正常步驟安裝Lombok.jar檔案後,在項目中需要引入Lombok.jar檔案,將其加入到ClassPath路徑下。
3.詳解:
Lombok是基於註解完成標記的,再對已經標記的變數進行特殊解析,Lombok中包含著如下一些自訂註解:
@val/@NonNull/@Cleanup/@Getter / @Setter/@ToString/@EqualsAndHashCode/@NoArgsConstructor/@RequiredArgsConstructor and @AllArgsConstructor
/@Data/@Value/@Builder/@Synchronized/@Getter(lazy=true)/@Log、Lombok提供了這幾種註解來完成對代碼的精簡。
Lombok能做到在IDE少編寫代碼,既不是用annotations process,也不是反射,而是直接在編譯器對原碼的編譯過程進行操作。
具體樣本如下:
使用Lombok的MModel類:
public @Data class User {
private String name;
}
或者
public class User {
@Getter @Setter
private String name;
}
此時:若在IDE的Outline視窗中可以看到在位元組碼中直接產生了name的getter/setter方法,這極大的簡化了在編程過程的代碼量,況且Lomnok無需第三方依賴,便可完成
對於Model類的操作。
在其他類中可以像正常使用類一樣使用:
User user = new User();
user.setName("Wangbc");
user.getName();
4.註解含義:
·@Data:相當於同時使用了@String、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor這些註解,對於Pojo類十分有用
·@NonNull:給方法參數增加這個註解會自動在方法內對該參數進行是否為空白的校正,如果為空白,則拋出NPE
·@CleanUp:自動產生try-finally這樣的代碼來關閉流
·@Getter(lazy=true):可以替代經典的Double Check Lock樣板代碼。
·其他的可以參考官網文檔進行詳細瞭解。
5.不足:
儘管Lombok可以對代碼進行精簡,但是在使用的過程中還是會遇到問題:例如,源碼中代碼的隱藏使得在代碼調試的過程中難度增加,增加代碼重構的麻煩,而且
Lombok在使用過程中與eclipse尚不能完美相容,這些在實際應用過程中都是需要考慮的問題,但本人覺得其無傷大雅。
6.完結:
Lombok是一個很小的,但是很實用的開源項目,它可以大幅的減少由於ORM架構應用導致的代碼冗餘。無論如何,對於已經接近完善project的源碼中,毫無用處的重複代
碼會降低其可讀性,精而少的代碼才更易維護。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java Lombok 減少代碼冗餘 利刃