手记

Lombok安装及使用详解——沧海一米

1. Lombok简介

1.1 是什么

官网地址: 官网
官方介绍:
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

大概的意思:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。

大白话就是:以前我们创建一个Java类,需要提供getter/setter/toString等繁琐的样板式代码,现在不需要了,加一个注解就搞定。

1.2 到底该不该用 Lombok?

这个问题一直有争议,爱它的人爱的要死,恨它的人恨地要死。

正方观点 反方观点
代码干净整洁,工作量大大降低 强侵入性,强 X 队友,一人用都得用,否则编译通不过
代码可读性增强,保持代码风格一致 失去了封装意义,因为有些属性不一定想提供公共的getter/setter方法
Bean修改后,不需要修改模板化代码 IDE和JDK升级存在破裂的风险

笔者观点中立,其它队友用就用,不用也影响不大。

2. 安装

笔者使用环境:jdk1.8 + idea2018+maven3.5.2

2.1 引入maven依赖

<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.12</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

2.2 安装插件

使用Lombok还需要给IDE安装插件,这也是说它会强X队友的原因。笔者使用的是idea,使用其它IDE的盆友自行Google。

打开idea的File->settings菜单,如图所示,点击Install安装

因兼容问题,2018版及以上直接安装Lombok插件可能会出现问题,若无法安装请点击这里查看解决方法

3. 常用注解使用

3.1 @Getter / @Setter注解

使用方法如图所示:

3.2 @toString注解

自动生成toString代码,并且修改属性后,不需要再修改。

3.3 @Data注解

@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

3.4 其它注解
  • @EqualsAndHashCode 注解在类,生成hashCode和equals方法。
  • @NoArgsConstructor 注解在类,生成无参的构造方法。
  • @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
  • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
  • @Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);

4. Lombok工作原理

Java编译过程大致可以分为3个过程:

  1. 解析与填充符号表过程。
  2. 插入式注解处理器的注解处理过程。
  3. 分析与字节码生成过程。

Lombok本质上就是一个实现了“JSR 269 API”的程序。在javac的过程中,Lombok会在上述第2个步骤根据Lombok注解,修改语法树(AST),从而给class增加新的节点(代码块)。

0人推荐
随时随地看视频
慕课网APP