九、Lombok

Lombok简介

Project Lombok是一个java库,可以自动插入编辑器并构建工具,为Java增添色彩
永远不要再写另一个getter或equals方法,只用一个注释,类就具有一个功能齐全的构建器,自动化日志记录变量等等。

Lombok实现原理

注解的两种解析方式

  • 运行时解析
  • 编译时解析

编译时解析的两种机制

  • Annotation Processing Tool(注解处理器)
  • Pluggable Annotation Processing API(JSR269插入式注解处理器)

原理图

graph LR
A(javac)-->B(生成抽象语法树AST)
B-->C(插入式注解处理器)
C-->D{语法树是否有变动}
D-->|有变动|B
D-->|无变动|G[生成字节码]
G-->H(.class文件)

Lombok常用注解

  1. 常见方法
    • @Data(包含下面四个注解)
    • @Getter
    • @Setter
    • @ToString
    • @EqualsAndHashCode
  2. 构造方法
    • @AllArgsConstructor(全参)
    • @NoArgsConstructor(无参)
    • @RequiredArgsConstructor(必须参数)
  3. 自动为类添加日志支持
    • @Slf4j
  4. 自动生成try/catch捕捉异常
    • @SneakyThrows
  5. 自动生成同步锁
    • @Synchronized
  6. 自动生成构造者模式
    • @Builder
  7. 自动调用变量的close方法释放资源
    • @Cleanup
  8. 自动生成空值校验
    • @NonNull

Lombok插件安装

在IDEA中安装Lombok插件

  1. IntelliJ IDEA-->Preferences-->Plugins-->Browse Repositories 搜索Lombok 安装
  2. 通过官网下载安装(注意和IDEA的版本对应) https://plugins.jetbrains.com/plugin/6317-lombok

实例

导入Lombok依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.16</version>
    <!-- 作用编译时期 -->
    <scope>provided</scope>
</dependency>

实例可以百度
https://segmentfault.com/a/1190000016111422#item-2-12

Lombok优缺点

  • 通过注解自动生产样板代码,提高开发效率
  • 代码简洁,只关注相关属性
  • 新增属性后,无需刻意修改相关方法
  • 降低了源代码的可读性和完整性
  • 加大对问题的排查难度
  • 需要IDE的相关插件支持
原文地址:https://www.cnblogs.com/bigfairy/p/14002097.html