Lombok 简要介绍

背景

最近因为项目使用到了lombok,然后自己做了一个PPT。总结了一部分知识。现在将PPT的内容抽取出来作为一篇博客。

基本介绍

Lombok可以减少JOPO对象的一些代码编写。如下面的对象,这种get和set方法主要是面向对象为了封装。但是其实也没做什么特别的事情。这种代码其实可以简洁一点。
这里写图片描述
使用Lombok后代码就会如下:
这里写图片描述
这样代码看起来就简洁了很多了。而且Lombok的功能还是比较强大的。有挺多的注解给我们使用,来帮助我们减少一些代码的编写。
常用的注解如下:

@Getter
@Setter
@ToString
@NotNull
@Data
@EqualAndHashCode
@NoArgsConstructor
@AllArgsConstructor

高级注解如下:

@CleanUp
@Synchronized
@SneakyThrows
@Log
@Slf4j

等效代码

@CleanUp
public void testCleanUp(){
    try{
        @CleanUp ByteArrayOutputStream baos =new ByteArrayOutputStream();
        System.out.println(baos.toString());
    }
}

等同于

public void testCleanUp(){
    try{
     // 代码
    }finally{
        baos.close();
    }
}

@CleanUp 对自动添加上对流的关闭操作

原理

自从Java6起,Javac就支持了”JSR 269 Pluggable Annotation Processing” API 规范,只要
程序实现了该API,就能在Javac运行的时候得到调用
1.Javac对源代码进行分析,生成一颗抽象语法树(AST)
2.运行过程中调用实现了”JSR 269 API”的 某 程序
3.此时某程序就可以完成自己的逻辑,包括修改第一步骤得到的抽象语法树
4.Javac使用修改后的抽象语法树(AST)生成字节码文件
这里写图片描述

总结

Lombok的原理很简单,就是在java编译器build的时候,lombok的解析器会去扫描代码,找出添加过注解的代码然后修改抽象语法树,然后剩下的事情由编译器继续做。所以我们的代码,在编译后在class文件里面就已经可以看到lombok给我们动态添加的代码了。

参考链接

Lombok 官网:https://www.projectlombok.org/
lombok介绍:https://yq.aliyun.com/articles/59972
https://www.cnblogs.com/tabCtrlShift/p/9076559.html
https://www.e-learn.cn/content/java/1007833


版权声明:本文为qq_24210767原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。