Lombok 简介
# 0.Lombok 简介
简单介绍下 Lombok
# 新建项目
为了方便演示,我们新建一个 Maven 项目,骨架使用 quickstart
# 使用 Lombok 之前
举个例子,我们写一个 User 类的 JavaBean,成员变量有 3 个:
package com.peterjxl;
public class User {
private String name;
private String email;
private String password;
}
2
3
4
5
6
7
然后,我们需要给这个 JavaBean 加上这些方法:
- getter
- setter
- 各种构造方法
- equals
- hashcode
- toString
- 非空判断
- ..............
例如:
package com.peterjxl;
import java.util.Objects;
public class User {
private String name;
private String email;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name) && Objects.equals(email, user.email) && Objects.equals(password, user.password);
}
@Override
public int hashCode() {
return Objects.hash(name, email, password);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
可以看到,其实几乎每个 JavaBean 的 getter、setter、构造方法等方法,都是几乎一样的,但是又必须得有;因为按照 OOP 的思想,成员变量必须得是 private,因此得有 setter 和 getter(而且 Spring 等框架有时也会用到这些方法)。
这是一种重复:每个 JavaBean 都有的重复代码,能不能简化呢?例如,我在类上加一个注解,就自动生成 getter、setter 方法呢?
因此,Lombok 出现了
# 什么是 Lombok
官网 (opens new window) 是这样介绍的:
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 库,能集成进大部分的 IDE 和构建工具,为你的 Java 锦上添花
不用再写 getter 和 equals 方法了,只需一个注解,你的类就能自动生成这些方法,还能自动插入 log 成员等,功能很多。
动手实践下吧!
# 引入依赖
以 Maven 依赖为例:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
2
3
4
5
6
除了 Maven,还支持 Ant,Gradle 等方式引入,具体引入方法看 官网 (opens new window) 文档:
# 安装 Lombok 插件
要在 IDE 中,安装相关的插件,才能正常编译和运行(支持的 IDE 看上图)。
以 IDEA 为例(版本 2023.1),默认已经捆安装了 Lombok 插件:
如果发现没有安装,安装步骤如下:
- 点击 File > Settings > Plugins 进入插件管理页面
- 点击 Browse repositories...
- 搜索 Lombok Plugin
- 点击 Install plugin 安装插件
- 重启 IntelliJ IDEA
# 新建 User2 类
为了和之前的类区分,我们复制一个 User 类:
package com.peterjxl;
public class User2 {
private String name;
private String email;
private String password;
}
2
3
4
5
6
7
然后加上 Lombok 的注解:@Setter 和@Getter
package com.peterjxl;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User2 {
private String name;
private String email;
private String password;
}
2
3
4
5
6
7
8
9
10
11
12
13
加上这两个注解后,就会自动生成 setter 和 getter 方法,简化了大量的 setter 和 getter 方法。
# 测试
最后,我们测试下能否正常使用。新建一个类,并调用 setter 和 getter 方法:
package com.peterjxl;
public class TestMain {
public static void main(String[] args) {
User user = new User();
user.setName("Peter");
User2 user2 = new User2();
user2.setName("Peter2");
System.out.println(user.getName());
System.out.println(user2.getName());
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
运行结果:
Peter
Peter2
2
可以看到,能正常调用 setter 和 getter 方法。下一篇,我们讲解更多关于 Lombok 的用法
# 最后
除此之外,Lombok 还是开源的,GitHub 地址:github.com/projectlombok/lombok (opens new window)
已将本文源码上传到 Gitee (opens new window) 或 GitHub (opens new window) 的分支 demo1,读者可以通过切换分支来查看本文的示例代码