什么是 Lombok,为什么需要它?
Lombok (Project Lombok) 是一个用于 Java 语言的库,它可以显著减少样板代码 (boilerplate code) 的数量。在 Java 开发中,开发者经常编写重复的结构:getter、setter、构造函数、toString()、equals() 和 hashCode() 方法。Lombok 通过注解在编译阶段自动生成这些代码。
Lombok 的主要目标是让代码更简洁、更短、更易于维护。您无需编写数十行重复代码,只需添加一个注解,所有内容便会自动生成。这对于模型类 (POJO/DTO) 尤其有用,在这些类中,样板代码可能占到总代码量的 70%。
Lombok 不是一个运行时框架——它仅在编译阶段工作。生成的代码会被嵌入到字节码中,因此在运行时不需要任何 Lombok 依赖。
安装 Lombok
Lombok 作为普通依赖项添加到您的项目中。由于它是一个 Java 库,因此不通过 pip 或 npm 安装。以下是主要的安装方法:
Maven
在 pom.xml 中添加:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope></dependency>Gradle
在 build.gradle 中添加:
dependencies { compileOnly 'org.projectlombok:lombok:1.18.30' annotationProcessor 'org.projectlombok:lombok:1.18.30'}IntelliJ IDEA
在 IntelliJ IDEA 中,需要安装 Lombok 插件 (Settings → Plugins → Marketplace → Lombok) 并启用注解处理 (Settings → Build, Execution, Deployment → Compiler → Annotation Processors → Enable annotation processing)。
Eclipse
从官方网站下载 Lombok 的 JAR 文件,然后双击运行——安装程序会自动找到您的 IDE 并配置必要的设置。
快速入门及代码示例
我们来看一个典型的 Java 类在使用 Lombok 前后的对比。
不使用 Lombok (传统方式):
public class User { private String name; private int age; private String email;
public User() {}
public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; }
public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
@Override public String toString() { return "User{name='" + name + "', age=" + age + ", email='" + email + "'}"; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return age == user.age && Objects.equals(name, user.name) && Objects.equals(email, user.email); }
@Override public int hashCode() { return Objects.hash(name, age, email); }}使用 Lombok:
import lombok.*;
@Data@NoArgsConstructor@AllArgsConstructorpublic class User { private String name; private int age; private String email;}仅用 5 行代码代替了 50 行!代码变得简洁、易读且易于维护。
Lombok 的主要注解和方法
以下是 Lombok 的关键注解。每个注解都会生成特定的内