Lombok开发指南
轉載自:http://codepub.cn/2015/07/30/Lombok-development-guidelines/
Lombok簡介
Lombok是一款好用順手的工具,就像Google Guava一樣,在此予以強烈推薦,每一個Java工程師都應該使用它。Lombok是一種Java?實用工具,可用來幫助開發人員消除Java的冗長代碼,尤其是對于簡單的Java對象(POJO)。它通過注釋實現這一目的。通過在開發環境中實現Lombok,開發人員可以節省構建諸如hashCode()和equals()這樣的方法以及以往用來分類各種accessor和mutator的大量時間。
Lombok官網地址:https://projectlombok.org/ 里面還提供了一個簡短的學習視頻。
安裝Lombok
Eclipse安裝Lombok
1.雙擊Jar安裝 
 首先下載Jar包,下載地址:http://projectlombok.org/download.html
注意如果eclipse沒有安裝到默認目錄,那么需要點擊Specify選擇eclipse.exe所在的路徑,然后Install即可完成安裝。
在新建項目之后,使用Lombok如果程序還報錯,那么點擊eclipse菜單的Project選項的clean,清理一下即可。
2.Eclipse手動安裝Lombok步驟
- 將lombok.jar復制到myeclipse.ini/eclipse.ini所在的文件夾目錄下
- 打開eclipse.ini/myeclipse.ini,在最后面插入以下兩行并保存: 
 -Xbootclasspath/a:lombok.jar
 -javaagent:lombok.jar
- 重啟eclipse/myeclipse
最后需要注意的是,在使用lombok注解的時候記得要導入lombok.jar包到工程,如果使用的是Maven Project,要在pom.xml中添加依賴,并設置Maven為自動導入,參見IntelliJ部分。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.8</version> </dependency>IntelliJ安裝Lombok
1.通過IntelliJ的插件中心安裝 
  
 
注意一點,在IntelliJ中如果創建的是Maven項目,那么在pom.xml文件中添加依賴后,需要設置Maven為自動導入。 
 
2.IntelliJ手動安裝Lombok 
 如果不想通過IntelliJ的插件中心安裝的話,也可以手動安裝,詳細步驟參見Github上的說明:https://github.com/mplushnikov/lombok-intellij-plugin
簡單點說手動安裝步驟如下: 
 Download the latest release and install it manually using Preferences > Plugins > Install plugin from disk…
Lombok用法
Lombok注解說明
- val:用在局部變量前面,相當于將變量聲明為final 
 @NonNull:給方法參數增加這個注解會自動在方法內對該參數進行是否為空的校驗,如果為空,則拋出NPE(NullPointerException)
- @Cleanup:自動管理資源,用在局部變量之前,在當前變量范圍內即將執行完畢退出之前會自動清理資源,自動生成try-finally這樣的代碼來關閉流
- @Getter/@Setter:用在屬性上,再也不用自己手寫setter和getter方法了,還可以指定訪問范圍
- @ToString:用在類上,可以自動覆寫toString方法,當然還可以加其他參數,例如@ToString(exclude=”id”)排除id屬性,或者@ToString(callSuper=true, includeFieldNames=true)調用父類的toString方法,包含所有屬性
- @EqualsAndHashCode:用在類上,自動生成equals方法和hashCode方法
- @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:用在類上,自動生成無參構造和使用所有參數的構造函數以及把所有@NonNull屬性作為參數的構造函數,如果指定staticName = “of”參數,同時還會生成一個返回類對象的靜態工廠方法,比使用構造函數方便很多
- @Data:注解在類上,相當于同時使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor這些注解,對于POJO類十分有用
- @Value:用在類上,是@Data的不可變形式,相當于為屬性添加final聲明,只提供getter方法,而不提供setter方法
- @Builder:用在類、構造器、方法上,為你提供復雜的builder APIs,讓你可以像如下方式一樣調用Person.builder().name(“Adam Savage”).city(“San Francisco”).job(“Mythbusters”).job(“Unchained Reaction”).build();更多說明參考Builder
- @SneakyThrows:自動拋受檢異常,而無需顯式在方法上使用throws語句
- @Synchronized:用在方法上,將方法聲明為同步的,并自動加鎖,而鎖對象是一個私有的屬性[Math Processing Error]lock或LOCK,而java中的synchronized關鍵字鎖對象是this,鎖在this或者自己的類對象上存在副作用,就是你不能阻止非受控代碼去鎖this或者類對象,這可能會導致競爭條件或者其它線程錯誤
- @Getter(lazy=true):可以替代經典的Double Check Lock樣板代碼
- @Log:根據不同的注解生成不同類型的log對象,但是實例名稱都是log,有六種可選實現類 
 - @CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
- @Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
- @Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
- @Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
- @Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
- @XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
 
Lombok使用示例
- val示例
- @NonNull示例
- @Cleanup示例
- @Getter/@Setter示例
- @ToString示例
- @EqualsAndHashCode示例
- @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor示例
- @Data示例
在IntelliJ中按下Ctrl+F12就可以看到Lombok已經為我們自動生成了一系列的方法。 
 
- @Value示例
- @Builder示例
- @SneakyThrows示例
- @Synchronized示例
- @Getter(lazy = true)
相當于如下所示
import java.util.concurrent.atomic.AtomicReference; public class GetterLazyExample {private final AtomicReference<java.lang.Object> cached = new AtomicReference<>();public double[] getCached() {java.lang.Object value = this.cached.get();if (value == null) {synchronized (this.cached) {value = this.cached.get();if (value == null) {final double[] actualValue = expensive();value = actualValue == null ? this.cached : actualValue;this.cached.set(value);}}}return (double[]) (value == this.cached ? null : value);}private double[] expensive() {double[] result = new double[1000000];for (int i = 0; i < result.length; i++) {result[i] = Math.asin(i);}return result;} }總結
以上是生活随笔為你收集整理的Lombok开发指南的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Java JDBC中,MySQL字段类型
- 下一篇: IDEA下的使用git
