Lombok的介绍、安装、编译分析
2019-03-01 本文已影响0人
二妹是只猫
Lombok是干什么的,有什么优点?
通过简单的注解来精简代码。
优点:
- 避免修改字段名字时忘记修改方法名
- 提升逼格
Lombok的原理:
javac从Java6开始支持"JSR 269 API",只要实现了该api,就能在javac运行的时候得到调用,而Lombok实现了"JSR 269 API"。javac编译源码的流程如下:
javac编译.jpg
首先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会报错的)。安装重启就可以正常使用了:
lombok plugin.jpg
红框里面时它的注解方法。
注意:
- 在类需要序列化、反序列化时详细控制字段时。如字段是null时默认是不展示的。
- 使用log时要选好自已需要的是哪个,不要引入错了。
Lombok简单演示:
lombok_without.jpg
这是我们平时常见的一个pojo类,里面有各种set、get、构造器等方法。代码还挺多
lombok_with.jpg
这是通过
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打开:
jd-gui.jpg
可以看到Lombok给我自动生成的set方法代码
Lombok还有很多注解,具体使用很简单就不一一介绍了。