Java代码简化神器-Lombok

简介: 一、背景   前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~ 二、开发之前的准备   1.lombok的官方网站:http://projectlombok.org/     2.lombok IDE插件安装     要想在IDE中使用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请自行查资料了解和安装。

  

    

相关文章
|
8天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
152 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
1月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
272 11
|
1月前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
2月前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
77 3
|
3月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
75 24
|
2月前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
78 2
|
2月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
142 5
|
2月前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
94 5
|
3月前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
2月前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。