一、Lombok
1.1何为Lombok
Lombok是Java的一个库,是一个工具,使用这个工具能够使得我们通过使用注解的方式减少Java中代码的开发。其简化主要是针对Java中的简单Java对象(就是无继承、无实现的)类。我们化简的就是这些类中重复冗余出现的构造函数,setter、getter、hashCode、toString等方法。我们使用注解即可实现。
1.2添加Lombok
第一步:在IDEA中下载Lombok插件。
第二步:在pom.xml中进行依赖导入。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
</dependency>
完成以上两步即可使用Lombok。
1.3使用Lombok
我们在官方文档上可以看到整个Lombok所提供的注解并不多,但是能够很大程度的化简代码。注解有一下这些:
@Data | 最为常用,其整合了@ToString、@Getter、@Setter、@RequiredArgsConstructor |
@ToString | 用在类上,为该类自动重写ToString方法 |
@Getter、@Setter | 设置get、set方法 |
@RequiredArgsConstructor、@NoArgsConstructor、@AllArgsConstructor | 需参构造器、无参构造器、全参构造器 |
@NonNull | 添加到属性上边进行判空 |
@Slf4j、@Log4j | 记录日志 |
@EqualAndHashCode | 添加equal、hashCode方法 |
@Cleanup | 用于关闭资源,例如redis |
@Value | 和@Data有点像,比@Data多全参构造,少setter、equal等 |
@SneakyThrows | 用在方法上,对方法抛出异常 |
val | 局部变量声明,自动判别类型 |
@Builder | 最为常用,快速的set |
一般来说,我们会给DTO加一个@Date,VO加上各种参数构造、@Builder。
1.4Lombok异常
1.5Lombok原理
- 注解扫描:Lombok的注解处理器会扫描Java源代码中的注解,并找到使用了Lombok注解的类、字段和方法。
- AST操作:Lombok注解处理器会对注解所标注的类进行抽象语法树(AST)的解析和操作,以识别和处理这些注解。
- 注解解析:注解处理器解析找到的注解,确定需要生成的代码类型和内容。
- 代码生成:基于注解的定义和规则,Lombok注解处理器生成相应的代码片段,如getter和setter方法、构造函数等。
- 代码注入:生成的代码片段被插入到编译结果中的相应位置,与手动编写的代码合并在一起。
- 最终编译:编译器将生成的代码和手动编写的代码一起编译为最终的字节码文件
总之 ,就是我们所写的Java程序配合Lombok在编译的时候生成.class文件,其中就包含了自动注入的代码。
1.6Lombok优劣
优:快速、方便、简化代码开发。
劣:胁迫使用(编译之后,你用我也用)、可读性较差、有点危险(我们的参数构造全部交给了Lombok,但有些属性我们不希望修改)