一、Lombok介绍以及优点
- 介绍
1.1 龙目岛:位于印度尼西亚西努沙登加拉省岛屿;
1.2 官网:https://projectlombok.org;
1.3 作用:通过简单注解来精简代码达到消除冗长代码的目的;
- 优点(优点有很多,主要列举自己认为重要的)
2.1 提高编码效率;
2.2 使代码更简洁;
2.3 消除冗长代码;
2.4 避免修改字段名字时忘记修改方法名;
2.5 注意:IDE上必须要支持Lombok,否则会报错;
二、Lombok原理
- 为什么能使用Lombok?
Lombok支持JSR 269 Pluggable Annotation Processing API,Javac从Java6开始支持“JSR 269 API”规范,只要程序实现了该API,就能在Javac运行的时候得到调用;
2.Javac编译源码的具体流程如下:Lombok运行原理
三、Lombok引入
使用Maven引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven</artifactId>
<version>1.16.20.0</version>
</dependency>
四、Lombok插件(IDEA)
IDEA中安装Lombok插件
IDEA中安装Lombok插件
五、Lombok常用注解
@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@Cleanup : 可以关闭流
@Builder : 被注解的类加个构造者模式
@Synchronized : 加个同步锁
@SneakyThrows : 等同于try/catch 捕获异常
@NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
@Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@toString:注解在类上;为类提供toString方法(可以添加排除和依赖);
官方文档https://projectlombok.org/features/index.html
六、反编译官网:http://jd.benow.ca/
七、Lombok验证(通过Java Decompiler验证Class文件)
八、Lombok工作中需要注意的点
在类需要序列化、反序列化时详细控制字段时(例如:Jackson json序列化);
使用Lombok能够省去手动创建setter和getter方法,但是也降低了源代码文件的可读性和完整性,降低了源代码阅读的舒适度;
使用@Slf4j还是@Log4j看项目使用的日志框架;
选择适合的地方使用Lombok,例如POJO是一个好地方,因为他很单纯;