1、Lombok入门与环境配置:理解Lombok作用、配置IDE与构建工具
学习目标:了解 Lombok 的核心价值,完成开发环境配置,并验证 Lombok 是否正常工作。
1. Lombok 是什么?
Lombok 是一个 Java 库,通过编译期注解处理(Annotation Processing)技术,自动为你生成常见的样板代码(boilerplate code),从而显著减少 Java 代码量,提升开发效率和代码可读性。
1.1 为什么需要 Lombok?
在传统 Java 开发中,一个简单的 POJO/Entity/DTO/VO 等数据对象往往需要大量重复代码:
// 传统写法(约 50 行代码)
public class User {private Long id;private String name;private String email;private Integer age;// 构造函数public User() {}public User(Long id, String name, String email, Integer age) {this.id = id;this.name = name;this.email = email;this.age = age;}// Getterpublic Long getId() { return id; }public String getName() { return name; }public String getEmail() { return email; }public Integer getAge() { return age; }// Setterpublic void setId(Long id) { this.id = id; }public void setName(String name) { this.name = name; }public void setEmail(String email) { this.email = email; }public void setAge(Integer age) { this.age = age; }// toString@Overridepublic String toString() {return "User{id=" + id + ", name='" + name + "', email='" + email + "', age=" + age + "}";}// equals & hashCode@Overridepublic boolean equals(Object o) { /* 省略 */ }@Overridepublic int hashCode() { /* 省略 */ }
}
使用 Lombok 后,只需 6 行代码:
// 使用 Lombok(仅 6 行)
import lombok.Data;@Data
public class User {private Long id;private String name;private String email;private Integer age;
}
✅ Lombok 在编译时自动生成上述所有方法,运行时字节码与手写代码完全一致。
1.2 Lombok 的工作原理
- 编译期处理:Lombok 作为注解处理器(Annotation Processor),在
javac
编译阶段介入 - 修改 AST:直接操作 Java 源码的抽象语法树(AST),插入生成的代码
- 无运行时依赖:生成的字节码不依赖 Lombok 库,因此 Lombok 依赖范围为
provided
🔍 关键点:Lombok 代码在
.java
源文件中看不到,但在.class
字节码中真实存在。
2. 在 IntelliJ IDEA 中配置 Lombok
2.1 安装 Lombok 插件
- 打开 IntelliJ IDEA
- 进入 File → Settings(Windows/Linux)或 IntelliJ IDEA → Preferences(macOS)
- 左侧选择 Plugins
- 在 Marketplace 搜索 “Lombok”
- 点击 Install 安装插件
- 安装完成后 重启 IDEA
💡 插件作用:让 IDEA 能识别 Lombok 生成的方法(如
getName()
),避免红色波浪线报错。
2.2 启用 Annotation Processing
- 进入 Settings → Build, Execution, Deployment → Compiler → Annotation Processors
- 勾选 Enable annotation processing
- 点击 OK 保存
⚠️ 如果跳过此步,IDEA 可能无法正确生成代码,导致编译失败。
2.3 验证插件安装成功
- 重启后,打开任意 Java 文件
- 输入
import lombok.Data;
应该能自动导入 - 使用
@Data
注解的类,其字段应能通过Alt + Insert
(Windows)或Cmd + N
(macOS)看到生成的方法
3. 配置构建工具依赖
3.1 Maven 配置
在 pom.xml
的 <dependencies>
中添加:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version> <!-- 建议使用最新稳定版 --><scope>provided</scope> <!-- 仅编译期需要,不打包到最终产物 -->
</dependency>
📌 为什么用
provided
?
因为 Lombok 只在编译期需要,运行时不需要。使用provided
可避免将 Lombok 打包到最终的 JAR/WAR 中。
3.2 Gradle 配置
在 build.gradle
中添加:
dependencies {compileOnly 'org.projectlombok:lombok:1.18.30'annotationProcessor 'org.projectlombok:lombok:1.18.30'// 如果使用测试类也需要 LomboktestCompileOnly 'org.projectlombok:lombok:1.18.30'testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
}
🔧 关键区别:
compileOnly
:编译期依赖,不打包annotationProcessor
:显式声明注解处理器(Gradle 4.6+ 必需)
4. 验证 Lombok 是否生效
4.1 创建测试类
// src/main/java/com/example/demo/User.java
package com.example.demo;import lombok.Data;
import lombok.ToString;@Data
@ToString
public class User {private Long id;private String name;private String email;
}
4.2 编写测试代码
// src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;public class DemoApplication {public static void main(String[] args) {User user = new User();user.setId(1L);user.setName("张三");user.setEmail("zhangsan@example.com");System.out.println(user); // 应输出:User(id=1, name=张三, email=zhangsan@example.com)System.out.println("Name: " + user.getName()); // 应正常输出}
}
4.3 验证步骤
验证项 | 预期结果 | 问题排查 |
---|---|---|
IDEA 不报红 | user.getName() 无红色波浪线 | 检查插件是否安装、Annotation Processing 是否启用 |
编译成功 | mvn compile 或 ./gradlew build 成功 | 检查依赖版本、scope 配置 |
运行正常 | 控制台输出正确内容 | 检查是否遗漏 @Data 注解 |
反编译查看 | 通过 IDEA 的 Decompile 功能能看到生成的方法 | 说明 Lombok 确实生成了代码 |
4.4 反编译验证(高级)
- 在 IDEA 中右键点击
User.class
(在target/classes
或build/classes
中) - 选择 Decompile(或使用插件如 CFR Decompiler)
- 查看反编译后的代码,应包含
getId()
、setName()
、toString()
等方法
5. 小结
✅ 本章你已掌握:
- Lombok 的核心价值:减少样板代码,提升开发效率
- 在 IntelliJ IDEA 中正确安装插件并启用注解处理
- 在 Maven/Gradle 中配置 Lombok 依赖
- 通过编写测试代码验证 Lombok 是否正常工作
- 排查常见配置问题
➡️ 下一步:学习 Lombok 的核心注解(如 @Data
、@Getter
、@Builder
等),开始在实际项目中应用!
📚 官方资源:
- Lombok 官网
- Lombok GitHub
- Lombok Feature Overview