Java代码简化神器-Lombok
2016-05-21 14:49
666 查看
一、背景
前段时间在开源社区中发现了一个比较牛逼的简化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的代码块
2.使用了lombok简化代码以后的代码块
有的小伙伴可能疑问了,到底这样写该类具不具有上面普通代码bean中包含的方法呢?那我们可以通过简化类的outline进行查看,如下
我们发现上那些方法和log对象,在我们的简化代码里面全都有!是不是太爽了。那我们接下来就进行测试,看看效果是不是一样?
注:在使用 lombok 注解的时候需要 lombok依赖(一般导入lombok.jar 包到工程)
测试结果
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,接着自己写了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请自行查资料了解和安装。
相关文章推荐
- 【SSH网上商城项目实战24】Struts2中如何处理多个Model请求
- java大数解a+b
- Java集合
- Java环境变量配置
- (action动态方法调用)struts通过ActionName!methodName.action,即通过感叹号(即!)访问某Action的方法,确老是报错
- Java注解一 注解的含义
- JavaWeb开发环境的搭建
- 关于struts2 中result type="stream"
- 我遇到的bug_使用spring+junit4时_java.lang.ExceptionInInitializerError
- java向上和向下转型
- 作业_java基础第十天_集合
- java-关于文件操作-输出流的使用
- 开发过程中的常用Eclipse插件
- Java EE中Srevlet的使用
- Struts框架 action怎么动态调用方法
- spring-boot之简单定时任务
- Java数据库连接池比较及使用场景
- Java用SAX和DOM解析器解析Xml
- Java线程创建的三种方式
- springcloud(第八篇)springcloud feign