应用Lombok 插件--提高使用 POJO 类的效率

不评价使用 Lombok 的好坏

什么是 Lombok ?

  • lombok ⼀个优秀的Java代码库,简化了Java的编码,为Java代码的精简提供了⼀种⽅式
  • 可以自动生成 JavaBean 的 getter,setter,
    equals,hashCode 和 toString 模板代码

自动生成原理简述

  • Lombok 通过自定义的注解生成 getter, setter 等代码, 是基于 JSR 提供的一套标准 API 生成的, 可以自定义的去编写注解处理器, 来生成我们的 Java 代码

具体流程

此处转自

作者:插猹的闰土
链接:https://juejin.cn/post/7069394256766435335
来源:稀土掘金

img

  1. javac 对源代码进行分析,生成了一棵抽象语法树(AST)
  2. 运行过程中调用实现了「JSR 269 API」的 Lombok 程序
  3. 此时 Lombok 就对第一步骤得到的 AST 进行处理,找到@Data 注解所在类对应的语法树(AST),然后修改该语法树(AST),增加 getter 和 setter 方法定义的相应树节点
  4. javac 使用修改后的抽象语法树(AST)生成字节码文件,即给 class 增加新的节点(代码 块)
AST 是一种用来描述程序代码语法结构的树形表示方式,语法树的每一个节点都代表着程序代码中的一个语法结构(Construct),例如包、类型、修饰符、运算符、接口、返回值甚至代码注释等都可以是一个语法结构。

使用

添加依赖

依赖可以添加在公共组件中,以后有新的组件想用,直接引用公共主组件就可以了
<!--https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.16-->
<!--scope=provided,说明它只在编译阶段生效,不需要打入包中, Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.16</version>
    <scope>provided</scope>
</dependency>

idea 安装插件

img

idea 启用注解,重启 idea

开启了idea才可以识别

img

使用注解

img

常见注解

  • @Getter / @Setter

    • 作用类上,生成所有成员变量的 getter / sette r方法
    • 作用于成员变量上,生成该成员变量的 getter / setter 方法
  • @ToString

    • 作用于类,覆盖默认的 toString() 方法
  • @EqualsAndHashCode

    • 作用于类,覆盖默认的 equals 和 hashCode
  • @NoArgsConstructor

    • 生成无参构造器
  • @AllArgsConstructor

    • 生成全参构造器
  • @Data

    • 作用于类上,是以下注解的集合
      • @ToString
      • @EqualsAndHashCode
      • @Getter
      • @Setter
      • @RequiredArgsConstructor
  • @Log / @Slf4j

    • 作用于类上,生成日志变量, 用于记录日志, 已经在 web 项目中添加 log 依赖

    • 如果不生效,记得检查下面的配置,另外重新更新下 lombok 插件,重启 idea

posted @ 2022-09-25 10:09  哨音  阅读(55)  评论(0编辑  收藏  举报