1、背景html
前段時間在開源社區中發現了一個比較牛逼的簡化Java代碼的神器-Lombok,接着本身寫了demo進行測試和練習,感受真的很不錯,特此分享給須要的小夥伴們~java
2、開發以前的準備eclipse
1.lombok的官方網站:http://projectlombok.org/ ide
2.lombok IDE插件安裝測試
要想在IDE中使用lombok是須要安裝相關插件的。若是不安裝,IDE 則沒法解析 lombok 註解。安裝以前須要首先在官方網站下載相關jar包,如今官網版本是:1.16.8.網站
[1].使用java -jar lombok.jar進行安裝,安裝過程以下this
cmd窗口下運行java -jar lombok.jar命令idea
出現如下界面,點擊肯定spa
這是由於lombok插件沒辦法直接找到你的IDE的安裝位置。接着你選擇Specify location...按鈕插件
選擇你的IDE的安裝位置的.exe文件,點擊Install/Update按鈕。
彈出以下彈窗,點擊肯定,安裝就完成了。
以後,打開IDE的安裝位置,你會發如今該位置多了lombok.jar在myeclipse.ini / eclipse.ini中也多了-javaagent:lombok.jar一句話
到此爲止,eclipse的lombok插件的安裝已經完成。
[2].eclipse / myeclipse 手動安裝 lombok
(1).將 lombok.jar 複製到 myeclipse.ini / eclipse.ini 所在的文件夾目錄下
(2)打開 eclipse.ini / myeclipse.ini,在最後面插入如下一行並保存:
-javaagent:lombok.jar
(3).重啓 eclipse / myeclipse
3.lombok註解
lombok提供的註解並很少,具體能夠參見lombok註解在線幫助文檔:http://projectlombok.org/features/index.
經常使用的註解:
@Data :註解在類上;提供類全部屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法。
@Setter:註解在屬性上;爲屬性提供 setting 方法。
@Getter:註解在屬性上;爲屬性提供 getting 方法。
@Log4j :註解在類上;爲類提供一個 屬性名爲log 的 log4j 日誌對象。
@Slf4j:註解在類上,爲類提供一個屬性名爲log的slf4j日誌對象
@NoArgsConstructor:註解在類上;爲類提供一個無參的構造方法。
@AllArgsConstructor:註解在類上;爲類提供一個全參的構造方法。
3、lombok實戰開發
1.沒有使用lombok的代碼塊
1 package com.hafiz.zhang.test; 2 3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5 6 public class CommonBean { 7 private Integer id; 8 private String name; 9 private static Logger log = LoggerFactory.getLogger(CommonBean.class); 10 public Integer getId() { 11 return id; 12 } 13 public void setId(Integer id) { 14 this.id = id; 15 } 16 public String getName() { 17 return name; 18 } 19 public void setName(String name) { 20 this.name = name; 21 } 22 public CommonBean(Integer id, String name) { 23 this.id = id; 24 this.name = name; 25 } 26 @Override 27 public String toString() { 28 return "CommonBean [id=" + id + ", name=" + name + "]"; 29 } 30 @Override 31 public int hashCode() { 32 final int prime = 31; 33 int result = 1; 34 result = prime * result + ((id == null) ? 0 : id.hashCode()); 35 result = prime * result + ((name == null) ? 0 : name.hashCode()); 36 return result; 37 } 38 @Override 39 public boolean equals(Object obj) { 40 if (this == obj) 41 return true; 42 if (obj == null) 43 return false; 44 if (getClass() != obj.getClass()) 45 return false; 46 CommonBean other = (CommonBean) obj; 47 if (id == null) { 48 if (other.id != null) 49 return false; 50 } else if (!id.equals(other.id)) 51 return false; 52 if (name == null) { 53 if (other.name != null) 54 return false; 55 } else if (!name.equals(other.name)) 56 return false; 57 return true; 58 } 59 public void sayHello(String name){ 60 log.info("調用 CommonBean 的sayHello方法"); 61 System.out.println("Hello " + name); 62 } 63 }
2.使用了lombok簡化代碼之後的代碼塊
1 package com.hafiz.zhang.test; 2 3 import lombok.Data; 4 import lombok.extern.slf4j.Slf4j; 5 6 @Data 7 @Slf4j 8 public class LombokBean { 9 private Integer id; 10 private String name; 11 public LombokBean(Integer id, String name) { 12 this.id = id; 13 this.name = name; 14 } 15 public void sayHello(String name){ 16 log.info("調用 LombokBean 的sayHello方法"); 17 System.out.println("Hello " + name); 18 } 19 }
有的小夥伴可能疑問了,到底這樣寫該類具不具備上面普通代碼bean中包含的方法呢?那咱們能夠經過簡化類的outline進行查看,以下
咱們發現上那些方法和log對象,在咱們的簡化代碼裏面全都有!是否是太爽了。那咱們接下來就進行測試,看看效果是否是同樣?
注:在使用 lombok 註解的時候須要 lombok依賴(通常導入lombok.jar 包到工程)
1 package com.hafiz.zhang.test; 2 3 public class TestLombok { 4 public static void main(String[] args) { 5 LombokBean test = new LombokBean(1, "Hafiz.Zhang.LombokBean"); 6 CommonBean test2 = new CommonBean(1, "Hafiz.Zhang.CommonBean"); 7 test.sayHello(test.getName()); 8 test2.sayHello(test2.getName()); 9 } 10 }
測試結果
2016-05-21 14:46:21 [ INFO ] [ com.hafiz.zhang.test.LombokBean.sayHello(LombokBean.java:16)-main:0 ] - [ ] 調用 LombokBean 的sayHello方法
Hello Hafiz.Zhang.LombokBean
2016-05-21 14:46:21 [ INFO ] [ com.hafiz.zhang.test.CommonBean.sayHello(CommonBean.java:60)-main:5 ] - [ ] 調用 CommonBean 的sayHello方法
Hello Hafiz.Zhang.CommonBean
發現效果徹底的同樣!爽到爆有木有!
注:lombok基本支持常見的java開發IDE,如:eclipse、myeclipse、idea等,都有對應的插件,本文直接介紹了eclipse和myeclipse的安裝方式,idea請自行查資料瞭解和安裝。