1.Lombok作用
通过使用Lombok提供的注解,可以让java变得简洁、快速、易于维护。
2.Lombok工作原理分析
自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。
1)javac对源代码进行分析,生成一棵抽象语法树(AST);
2)运行过程中调用实现了“JSR 269 API”的Lombok程序;
3)Lombok就对第一步骤得到的AST进行处理,找到相应注解所在类对应的语法树(AST),然后修改该语法树(AST),增加相应方法定义的相应树节点;
4)javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块);
3.Lombok使用方法
3.1jar包引入,添加maven依赖,并下载安装lombok插件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
3.2常用注解
3.2.1@Data
注解在类,生成setter/gette、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法,等效于{@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}。
3.2.2@Getter
注解在类或字段,注解在类时为所有字段生成getter方法,注解在字段上时只为该字段生成getter方法。
3.2.3@Setter
注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
**3.2.4@RequiredArgsConstructor **
注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
3.2.5@EqualsAndHashCode
注解在类,生成hashCode和equals方法。
3.2.6@NoArgsConstructor
注解在类,生成无参的构造方法。
3.2.7@AllArgsConstructor
注解在类,生成包含类中所有字段的构造方法。
3.2.8@ToString
注解在类,添加toString方法。
3.2.9@Slf4j
注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);
3.2.10@NonNull
该注解用在属性或构造器上,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。
3.2.11@Cleanup
该注解能帮助我们自动调用close()方法,很大的简化了代码。
参考地址:Lombok介绍、使用方法和总结
参考地址:Lombok简介、使用、工作原理、优缺点