Lombok介绍,使用方法及原理
Lombok 是一个自动插入编辑器和构建工具的Java库。它提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。
官方首页:https://projectlombok.org/
下载位置:https://projectlombok.org/download
注解介绍:https://projectlombok.org/features/all
GitHub : https://github.com/rzwitserloot/lombok
常用注解介绍
@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@Slf4j : 注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法 所有参数
@NonNull: 注解在属性上,用来校验参数
@Getter @Setter:分别为属性添加get/set方法
public class Person {
private String id;
private Logger log = Logger.getLogger(Person.class);
public Person() {
}
public Person(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
上述代码使用lombok可以这样写
@Log4j
@NoArgsConstructor
@AllArgsConstructor
public class Person {
@Getter @Setter private String id;
}
稍微介绍一下,细节有位大佬已经在简书上描述的很明白了。
安装及使用教程
安装
一、Eclipse/My Eclipse安装lombok
使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。
1. 先在官网下载最新版本的 JAR 包,我目前是1.16版
2. 双击下载下来的 JAR 包安装 lombok,或者使用命令行 java -jar lombok.jar
3. 勾选要安装的eclipse/my eclipse 单击install/update按钮
如果上述方法不可行,可尝试以下方法:
1. 将 lombok.jar复制到myeclipse.ini / eclipse.ini所在的文件夹目录下
2. 打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
3.重启 eclipse / myeclipse
二、IDEA 安装lombok
- 添加插件Files->settings->plugins
- 点击按钮【Install JetBrains plugin…】
- 在新弹出的窗口,搜索lombok,在搜索到的lombok上右键安装就可以了
三、Maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven</artifactId>
<version>1.16.20.0</version>
<type>pom</type>
</dependency>
使用
- 在需要安装Lombok的工程下加入lombok.jar包
- 在需要的类上或属性上面加入想要的注解
原理解释
lombok本质上就是这样的一个实现了”JSR 269 API(可以参考这个)”的程序。在使用javac的过程中,它产生作用的具体流程如下:
1. javac对源代码进行分析,生成一棵抽象语法树(AST)。
2. 运行过程中调用实现了”JSR 269 API”的lombok程序。
3. 此时lombok就对第一步骤得到的AST进行处理,找到注解所在类或者属性对应的语法树(AST),然后修改该语法树(AST),增加注解所定义的相应树节点。
4. javac使用修改后的抽象语法树(AST)生成字节码文件。
总结
使用lombok省略了一系列的繁杂的方法定义,开发时间更短,提高了代码的简洁性,同时也降低了代码的完整性和可读性,使用lombok需要考虑清楚其利弊。据我所知,weixin-java-tools、 Elastic-Job使用了此JAVA库。