首页 > 其他分享 >应用Lombok 插件--提高使用 POJO 类的效率

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

时间:2022-09-25 10:23:32浏览次数:92  
标签:插件 AST -- idea POJO 生成 getter 注解 Lombok

不评价使用 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

标签:插件,AST,--,idea,POJO,生成,getter,注解,Lombok
From: https://www.cnblogs.com/isChenJY/p/16727229.html

相关文章

  • 黑盒、白盒和灰盒测试的区别
    1.黑盒测试黑盒测试:也可叫功能测试,是一种从用户角度出发的测试。把被测程序当作一个黑盒子,测试人员完全不用考虑盒子里面的逻辑结构和具体运作,只依据程序的需求规格说明书,......
  • Java开发环境搭建
    Java开发环境搭建·Java三大版本JavaSE:标准版(桌面程序,控制台开发......)JavaME:嵌入式开发(手机,小家电......)JavaEE:企业级开发(web端,服务器开发...)·JDK,JRE,JVM......
  • 55道软件测试精品面试题分享!内附答案!
    1、你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按......
  • Steamlit初识和安装入门
    一、前言之前看我同事搭建了一个简易的网页,觉得挺有趣的,一直想学习下来着,然而机缘巧合,前阵子才知道原来是用Streamlit开发的呀,于是又开始了自己的三分钟热情了,哈哈哈......
  • 刻意练习可以用来改变性格
    刻意练习很适合用来改变性格1.性格可以看成是无数个习惯组成的系统,2.习惯可以通过刻意练习来改变3.所以刻意练习可以改变性格,也许是是唯一的方法,......
  • 学习笔记-Metasploit
    Metasploit模块exploits(渗透攻击/漏洞利用模块)  利用已发现的安全漏洞或配置弱点对远程目标进行攻击,为Metsaploit框架中最核心的功能组件。payloads(攻击......
  • java SE 狂神笔记
    1.包机制:区别于类名的命名空间,一般利用公司域名倒置作为包名(www.baidu.com——>com.baidu.www)2.super注意点:a.super调用父类的构造方法,必须在构造方法的第一个;......
  • java读取文本文件的方法
     转自:http://www.java265.com/JavaJingYan/202110/16350339921562.html文本文件是我们日常开发中,常用的简单存储载体,那么如何读取文本文件呢?下文笔者将通过示例的方式......
  • 力扣算法之数组中出现次数超过一半的数字
    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例:输入:[1,2,3,2,2,2,5,4,2]输......
  • 09第九章:【01】Docker复杂安装—MySQL主从复制
    一、MySQL主从复制原理需要掌握MySQL主从复制原理二、MySQL主从搭建步骤1、创建主服务容器新建主服务器容器实例3307docker run -p 3307:3306 --name mysql......