一、背景

  前段时间在开源社区中发现了一个比较牛逼的简化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的代码块

 package com.hafiz.zhang.test;

 import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class CommonBean {
private Integer id;
private String name;
private static Logger log = LoggerFactory.getLogger(CommonBean.class);
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CommonBean(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "CommonBean [id=" + id + ", name=" + name + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CommonBean other = (CommonBean) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public void sayHello(String name){
log.info("调用 CommonBean 的sayHello方法");
System.out.println("Hello " + name);
}
}

  2.使用了lombok简化代码以后的代码块

 package com.hafiz.zhang.test;

 import lombok.Data;
import lombok.extern.slf4j.Slf4j; @Data
@Slf4j
public class LombokBean {
private Integer id;
private String name;
public LombokBean(Integer id, String name) {
this.id = id;
this.name = name;
}
public void sayHello(String name){
log.info("调用 LombokBean 的sayHello方法");
System.out.println("Hello " + name);
}
}

有的小伙伴可能疑问了,到底这样写该类具不具有上面普通代码bean中包含的方法呢?那我们可以通过简化类的outline进行查看,如下

我们发现上那些方法和log对象,在我们的简化代码里面全都有!是不是太爽了。那我们接下来就进行测试,看看效果是不是一样?

注:在使用 lombok 注解的时候需要 lombok依赖(一般导入lombok.jar 包到工程)

 package com.hafiz.zhang.test;

 public class TestLombok {
public static void main(String[] args) {
LombokBean test = new LombokBean(1, "Hafiz.Zhang.LombokBean");
CommonBean test2 = new CommonBean(1, "Hafiz.Zhang.CommonBean");
test.sayHello(test.getName());
test2.sayHello(test2.getName());
}
}

测试结果

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

  

    

Java代码简化神器-Lombok的更多相关文章

  1. Java开发速度神器Lombok,Eclipse端安装使用教程

    一.Lombok简介 Lombok是一个代码生成器,可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法. 使用 ...

  2. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

  3. Lombok简化Java代码

    导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...

  4. JAVA奇技淫巧简化代码之lombok

    背景 最近在做一个小功能,又不想在原有体态臃肿的项目中追加,为了调试方便并且可以快速开发就采用了springboot.由于使用了JPA,建了几个类,然后通过IDE去生成其属性的构造器.getter.s ...

  5. Lombok简化Java代码的好工具

    lombok 的官方网址:http://projectlombok.org/ 关于lombok 的介绍,有几篇帖子,写得都很好 比如 http://www.blogjava.net/fancydeep ...

  6. 使用 Lombok 简化项目中无谓的Java代码

    在写使用Java时,难免会有一些模板代码要写,不然get/set,toString, hashCode, close 资源,定义构造函数等等.代码会显得很冗余,很长.Lombok项目可以是我们摆脱这些 ...

  7. Lombok 安装、入门 - 消除冗长的 java 代码

    lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码. lombok 的官方网址:http://projectlombok.org/  lombok 安装1. ...

  8. Lombok - 消除冗长的 java 代码

    前言:    逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下.    lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码.特别是相对于 ...

  9. Lombok 安装、入门 - 消除冗长的 java 代码(转)

    前言:    逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下.    lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码.特别是相对于 ...

随机推荐

  1. 个人建了一个APPCAN移动前端开发交流QQ群258213194

    QQ群号:258213194,欢迎有兴趣的同志加一下. 二维码如下:

  2. iOS开发——UI基础-UIButton、UIImageView、UILabel的选择

    1.UILabel - UILabel的常见属性 @property(nonatomic,copy) NSString *text; 显示的文字 @property(nonatomic,retain) ...

  3. 运动曲线提升CSS动画效果

    原文链接 译文\译者鞠大宝 先有UI动画,然后才会有好的UI动画.好的动画会让人惊叹“哇哦!”——因为页面看上去很流畅.很漂亮,最重要的是,自然,一点都不会让人觉得不和谐或者僵硬死板.如果你经常逛Dr ...

  4. git 教程(2)--创建版本库

    什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...

  5. 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?

    前几天搜狗的一道笔试题,大意是在随机森林上增加一棵树,variance和bias如何变化呢? 参考知乎上的讨论:https://www.zhihu.com/question/27068705 另外可参 ...

  6. composer 的使用

    composer是php包管理工具,非常好用!许多框架,例如zendframework都可以用它来安装. 使用起来其实是很简单的.以下以windowns操作系统为例: 把php添加到系统环境变量.(网 ...

  7. hdu1520 树形dp Anniversary party

    A - Anniversary party Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  8. time()函数,dirname(__FILE__) 的使用总结

    time()函数将返回从1970-1-1 0:0:0到当前时间的秒数.(整型) dirname(__FILE__) php中定义了一个很有用的常数,即 __file__ 这个内定常数是当前php程序的 ...

  9. replace、replaceAll、replaceFirst的区别详解

    String s = "my.test.txt"; System.out.println(s.replace(".", "#")); Sys ...

  10. jquery学习——遍历

    1.each() $(selector).each(function(index,element)) var arr = [ "a", "bb", " ...