Java代碼簡化神器-Lombok

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請自行查資料瞭解和安裝。

相關文章
相關標籤/搜索