不评价使用 Lombok 的好坏
什么是 Lombok ?
- lombok ⼀个优秀的Java代码库,简化了Java的编码,为Java代码的精简提供了⼀种⽅式
- 可以自动生成 JavaBean 的 getter,setter,
equals,hashCode 和 toString 模板代码
自动生成原理简述
- Lombok 通过自定义的注解生成 getter, setter 等代码, 是基于 JSR 提供的一套标准 API 生成的, 可以自定义的去编写注解处理器, 来生成我们的 Java 代码
具体流程
此处转自
作者:插猹的闰土
链接:https://juejin.cn/post/7069394256766435335
来源:稀土掘金
- javac 对源代码进行分析,生成了一棵抽象语法树(AST)
- 运行过程中调用实现了「JSR 269 API」的 Lombok 程序
- 此时 Lombok 就对第一步骤得到的 AST 进行处理,找到@Data 注解所在类对应的语法树(AST),然后修改该语法树(AST),增加 getter 和 setter 方法定义的相应树节点
- 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 安装插件
idea 启用注解,重启 idea
开启了idea才可以识别
使用注解
常见注解
-
@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
-