本篇简单介绍lombok的作用以及lombok的常用注解和eclipse安装lombok

一.lombok的介绍

Lombok 是一个 Java 库,它作为插件安装至编辑器中,其作用是通过简单注解来精简代码,以此达到消除冗长代码的目的。

1.1 优点

1) 通过注解自动生成成员变量的 getter、setter 等方法,使代码简洁

2) 修改类变量名时,无需关注其 getter、setter 等方法

1.2 缺点

降低源码文件的可读性

 

1.3 原理

从 Java 6 开始,javac 就支持 JSR 269 API 规范,而 Lombok 实现 JSR 269 Pluggable Annation Processing API 规范。

当我们编写代码并保存后,编辑器会自动编译源码文件,在这个过程中,源码先被转化为 AST。

然后,Lombok 插件解析 AST 是否存在 Lombok 的注解。如果存在则修改 AST ,使其生成注解对应的代码。

最终将修改的 AST 解析并生成字节码文件。

 

二.lombok的安装(两种方式)

第一种方式:maven引入

 

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven</artifactId>
    <version>1.16.20.0</version>
</dependency>



1.下载 lombok.jar第二种方式:jar包引入

(https://projectlombok.org/download.html)2.将 lombok.jar 放在eclipse安装目录下,和 eclipse.ini 文件平级的。
这里写图片描述

 

3.运行lombok.jar
在lombok.jar 的目录下,运行:
java -jar lombok.jar
a. 运行后会弹框如下框,直接点确定
这里写图片描述

 


b. 点specify location 按钮,选择eclipse的安装目录,选择到eclipse层即可。
这里写图片描述

 


按如下图步骤点击install/Update即可
这里写图片描述

 

c. 成功后如下图:
这里写图片描述

 

d.如果想看看是否真的安装成功,可以在 eclipse.ini 中看看,我的环境是多了一行(-javaagent:D:\Program Files\eclipse\lombok.jar)

 

重启eclipse,再clean project。

 

三.注解介绍

Lombok 常用的注解如下:

@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@Cleanup : 可以关闭流
@Builder : 被注解的类加个构造者模式
@Synchronized : 加个同步锁
@SneakyThrows : 等同于try/catch 捕获异常
@NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
@Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@toString:注解在类上;为类提供toString方法(可以添加排除和依赖);
官方文档https://projectlombok.org/features/index.html


4.2 案例演示 

本次测试使用 Ecplise 编辑器。

  1. @Data
  2. public class User {
  3. private int id;
  4. private String name;
  5. private String password;
  6. private Date birthday;
  7. }

当添加注解保存文件后,Ecplise 编辑器的 Outline 视图结果如下:

 

我们还可以使用 jd-gui 等反编译工具查看源码,结果如下:

 

posted @ 2019-03-26 11:11  憨憨青年  阅读(426)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css