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的代码块
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的更多相关文章
- Java开发速度神器Lombok,Eclipse端安装使用教程
一.Lombok简介 Lombok是一个代码生成器,可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法. 使用 ...
- lombok 简化java代码注解
lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...
- Lombok简化Java代码
导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...
- JAVA奇技淫巧简化代码之lombok
背景 最近在做一个小功能,又不想在原有体态臃肿的项目中追加,为了调试方便并且可以快速开发就采用了springboot.由于使用了JPA,建了几个类,然后通过IDE去生成其属性的构造器.getter.s ...
- Lombok简化Java代码的好工具
lombok 的官方网址:http://projectlombok.org/ 关于lombok 的介绍,有几篇帖子,写得都很好 比如 http://www.blogjava.net/fancydeep ...
- 使用 Lombok 简化项目中无谓的Java代码
在写使用Java时,难免会有一些模板代码要写,不然get/set,toString, hashCode, close 资源,定义构造函数等等.代码会显得很冗余,很长.Lombok项目可以是我们摆脱这些 ...
- Lombok 安装、入门 - 消除冗长的 java 代码
lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码. lombok 的官方网址:http://projectlombok.org/ lombok 安装1. ...
- Lombok - 消除冗长的 java 代码
前言: 逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下. lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码.特别是相对于 ...
- Lombok 安装、入门 - 消除冗长的 java 代码(转)
前言: 逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下. lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码.特别是相对于 ...
随机推荐
- myeclipse的项目导入到eclipse下,com.sun.org.apache.commons.beanutils.BeanUtils不能导入
com.sun.org.apache.commons.beanutils.BeanUtils这个包不能引入了怎么办自己下了个org.apache.commons的jar包了之后,改成import or ...
- QQ空间个人中心的广告
http://qzonestyle.gtimg.cn/qzone/space_item/boss_pic/*.jpghttp://img*.paipaiimg.com/*.jpghttp://cn.q ...
- MongoDB的学习和使用(查询find)
语法 MongoDB 查询数据的语法格式如下: >db.COLLECTION_NAME.find() find() 方法以非结构化的方式来显示所有文档. 如果你需要以易读的方式来读取数据,可以使 ...
- Java NIO与IO的区别和比较
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...
- BZOJ1036——树的统计count
1.题目大意:给你一棵树,有三种操作 1>qmax,询问u到v中间点权的最大值 2>qsum,询问u到v中间点权和 3>change,把u这个节点的权值改为v 2.分析:树链剖分的裸 ...
- TP5的图片上传
public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); $picture=mod ...
- MySQL 同主机不同数据库之间的复制
MySQL同主机不同数据库的复制命令:注意运行在Terminal中,不运行在MySQL命令行中. mysqldump Portal_DEV -u root -ppassword1 --add-drop ...
- html5跨域通讯之postMessage的用法
转自:http://www.cnblogs.com/wshiqtb/p/3171199.html postMessagePortal.html 页面代码 <!DOCTYPE html> & ...
- 2016年10月12日--string、Math类、Random随机数、DateTime、异常保护
string string.length; //得到string长度 string.Trim(); //去掉string前后的空格 string.TrimStart(); //去掉string前的空格 ...
- ASIO插件 真的能提升 音质?(听音乐者必看)
最近在倒弄HIFI音乐播放器footbar2000的配置时,发现了2011年的一个神贴, 最牛逼的是,这个神贴到现在还屹立不倒,还有很多无知的人在下面膜拜, 我真的想问:你这么优秀,都能逆天反转音质, ...