Lombok介绍
Lombok官网:(https://projectlombok.org)
通过简单的注解来精简代码达到消除冗长代码的目的
Lombok优点
- 提高编码效率
- 是代码更简洁
- 消除冗长代码
- 避免修改字段名字时忘记修改方法名
- 提高下‘逼格’
IDE上必须要支持Lombok,否则会报错
Lombok原理
- JSR 269 Pluggable Annotation Processing API
- javac从Java6开始支持“JSR 269 API”规范
- 只要程序实现了该API,就能在javac运行的时候得到调用
-
Lombok实现了“JSR 269 API”,在编译时,javac编译源码的具体流程如下:
Maven引入Lombok
在pom.xml
文件,加入到<dependencies>
中:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
依赖可以从官网拿到
Lombok实战coding
- @Data
包含@Getter
,@Setter
,@ToString
,@EqualsAndHashCode
- @Getter
生成getter
方法 - @Getter(AccessLevel.PROTECTED)
生成的getter
方法不是默认的public
而是protect
- @Setter
生成setter
方法 - @Setter(AccessLevel.PROTECTED)
生成的setter
方法不是默认的public
而是protect
- @NoArgsContructor
无参构造器 - @AllArgsContructor
所有参数构造器 - @ToString
把这个类声明的所有属性转化成string - @EqualsAndHashCode
使用Lombok默认规则重写equals和hashCode方法 - @Slf4j
声明这个注解之后可以直接调用log
进行日志操作,使用的是logback
- @Log4j
项目用Log4j
日志框架时使用
反编译大法
- Java Decompiler (http://jd.benow.ca)
分为:JD-GUI
,JD-Eclipse
,JD-IntelliJ
可以将Lombok修改之后编译的字节码反编译成源码,看看其如何实现。
Lombok验证
- 通过Java Decompiler验证Class文件
Lombok工作中需要注意的点
- 在类需要序列化、反序列化时详细控制字段的时候,例如:Jackson json序列化
- 使用Lombok虽然能够省去手动创建setter和getters方法等繁琐,但是却降低了阅读源代码的舒适度