zoukankan      html  css  js  c++  java
  • Java代码简化神器-Lombok

    一、背景

      前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~

    二、开发之前的准备

      1.lombok的官方网站:http://projectlombok.org/  

      2.lombok IDE插件安装

        要想在IDE中使用lombok是需要安装相关插件的。如果不安装,IDE 则无法解析 lombok 注解。安装之前需要首先在官方网站下载相关jar包,现在官网版本是:1.16.8.

        [1].使用java -jar lombok.jar进行安装,安装过程如下

          cmd窗口下运行java -jar lombok.jar命令

          

          出现以下界面,点击确定

          

          这是因为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:注解在类上;为类提供一个全参的构造方法。

    三、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请自行查资料了解和安装。

      

        

  • 相关阅读:
    规范的html页面
    什么是MVC (模型 视图 控制器)?
    MVC概念
    MVC实用集锦(1)
    三层架构与MVC的区别
    spring-data-jpa的简单介绍
    Spring和SpringMVC的区别
    Spring常用注解汇总
    jmeter---CSV文件设置操作
    Linux----软件包管理
  • 原文地址:https://www.cnblogs.com/hafiz/p/5514750.html
Copyright © 2011-2022 走看看