Lombok 介绍
Lombok 是一个 Java 工具库,通过添加注解的方式,可以帮助我们消除一些冗长代码,使代码看起来简洁一些,简化 Java 的开发
引入依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
@Data
注解会帮助我们自动生成⼀些方法, 包含getter/setter, equals, toString等
原理解释
有这样一个实体类
import lombok.Data;@Data
public class Student {private String name;private int age;
}
可以观察加了 @Data
注解之后的class文件
在target -> classes 中找到对应的 class文件,发现注解消失了,但代码会填充成这样
import lombok.Generated;public class Student {private String name;private int age;@Generatedpublic Student() {}@Generatedpublic String getName() {return this.name;}@Generatedpublic int getAge() {return this.age;}@Generatedpublic void setName(final String name) {this.name = name;}@Generatedpublic void setAge(final int age) {this.age = age;}@Generatedpublic boolean equals(final Object o) {if (o == this) {return true;} else if (!(o instanceof Student)) {return false;} else {Student other = (Student)o;if (!other.canEqual(this)) {return false;} else if (this.getAge() != other.getAge()) {return false;} else {Object this$name = this.getName();Object other$name = other.getName();if (this$name == null) {if (other$name != null) {return false;}} else if (!this$name.equals(other$name)) {return false;}return true;}}}@Generatedprotected boolean canEqual(final Object other) {return other instanceof Student;}@Generatedpublic int hashCode() {int PRIME = true;int result = 1;result = result * 59 + this.getAge();Object $name = this.getName();result = result * 59 + ($name == null ? 43 : $name.hashCode());return result;}@Generatedpublic String toString() {String var10000 = this.getName();return "Student(name=" + var10000 + ", age=" + this.getAge() + ")";}
}
可以看出来, Lombok是一款在编译期生成代码的工具包
Java 程序的运行原理:
使用lombok如下图所示:
如果觉得 @Data
生成方法太多了,lombok 也提供了一些更精细粒度的注解
注解 | 作用 |
---|---|
@Getter | 自动添加 getter 方法 |
@Setter | 自动添加 setter 方法 |
@ToString | 自动添加 toString 方法 |
@EqualsAndHashCode | 自动添加 equals 和 hashCode 方法 |
@NoArgsConstructor | 自动添加无参构造方法 |
@AllArgsConstructor | 自动添加全属性构造方法,顺序按照属性的定义顺序 |
@NonNull | 属性不能为 null |
@RequiredArgsConstructor | 自动添加必需属性的构造方法,final + @NonNull 的属性为必需 |
@Data
= @Getter
+ @Setter
+ @ToString
+ @EqualsAndHashCode
+ @RequiredArgsConstructor
+ @NoArgsConstructor
更快捷的引入依赖
上述引入 lombok 依赖,需要去找 lombok 的坐标。接下来介绍更简单引入依赖的方式
安装 EditStarters
插件, 重启 Idea
在 pom.xml 文件中,单击右键,选择 Generate, 操作如下图所示:
进入 Edit Starters 的编辑界面,添加对应依赖即可
不是所有依赖都可以在这里添加,这个界面和 Spring Boot 创建项目的界面一样。如果依赖不在这里的,还需要去 Maven 仓库查找坐标,添加依赖