Lombok的介绍、安装、编译分析
2019-03-01 本文已影响0人
二妹是只猫
Lombok是干什么的,有什么优点?
通过简单的注解
来精简代码。
优点:
- 避免修改字段名字时忘记修改方法名
- 提升逼格
Lombok的原理:
javac从Java6开始支持"JSR 269 API"
,只要实现了该api,就能在javac运行的时候得到调用,而Lombok
实现了"JSR 269 API"
。javac编译源码的流程如下:

首先javac运行我们的源文件如何通过分析(parse)生成抽象语法树AST,然后在运行过程中(annotation processing)会调用实现了"JSR 269 API"
规范的Lombok
程序,然后就会通过它写好的注解生成相依的代码(如Data
注解,会相应的生成set,get,tostring等方法),处理器就输出的就是被Lombok
处理过的抽象语法树,最后解析和生成字节码文件。
Lombok的安装:
直接去去Lombok官网去查看最新版本,然后复制粘贴到pom中引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
<scope>provided</scope>
这个字段意思是编译时不被打包成war包,然后在去插件中安装Lombok Plugin
(不安装的话ide会报错的)。安装重启就可以正常使用了:

红框里面时它的注解方法。
注意:
- 在类需要序列化、反序列化时详细控制字段时。如字段是null时默认是不展示的。
- 使用log时要选好自已需要的是哪个,不要引入错了。
Lombok简单演示:

这是我们平时常见的一个pojo类,里面有各种set、get、构造器等方法。代码还挺多

这是通过
Lombok
改造过的类,是不是顺眼多了。
Lombok反编译分析:
import lombok.Setter;
@Setter
public class SetterTest {
private String name;
}
首先创建一个简单的SetterTest类并使用了Lombok
的Setter
注解,然后在终端里执行
mvn clean package -Dmaven.test.skip=true
命令,这条命令的意思是清除之前编译好的包,并跳过单元测试(mvn要自己去配置环境哈,怎么配置可以看mac下添加环境变量),这样我们的源文件就被编译出来了,具体位置终端会输出信息的。这里我用的是JD-GUI打开:

可以看到Lombok
给我自动生成的set
方法代码
Lombok
还有很多注解,具体使用很简单就不一一介绍了。