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,读者可以通过切换分支来查看本文的示例代码