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常用注解
- 常见方法
- @Data(包含下面四个注解)
- @Getter
- @Setter
- @ToString
- @EqualsAndHashCode
- 构造方法
- @AllArgsConstructor(全参)
- @NoArgsConstructor(无参)
- @RequiredArgsConstructor(必须参数)
- 自动为类添加日志支持
- @Slf4j
- 自动生成try/catch捕捉异常
- @SneakyThrows
- 自动生成同步锁
- @Synchronized
- 自动生成构造者模式
- @Builder
- 自动调用变量的close方法释放资源
- @Cleanup
- 自动生成空值校验
- @NonNull
Lombok插件安装
在IDEA中安装Lombok插件
IntelliJ IDEA
-->Preferences
-->Plugins
-->Browse Repositories
搜索Lombok
安装- 通过官网下载安装(注意和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的相关插件支持