Lombok 是 Java 世界里一个非常受欢迎的「代码生成工具」,也可以理解为“偷懒神器”。
一句话总结:帮你自动写样板代码(boilerplate),让实体类/POJO/Bean 瞬间瘦身。
1. 它到底干什么?
在 Java 里,一个最简单的数据类往往要写大量重复代码:
public class User {
private Long id;
private String name;
// 构造器
public User() {}
public User(Long id, String name) { ... }
// Getter / Setter
public Long getId() { ... }
public void setId(Long id) { ... }
public String getName() { ... }
public void setName(String name) { ... }
// toString
@Override
public String toString() { ... }
// equals & hashCode
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
}
用了 Lombok 后,只需:
@Data // 自动加上 getter/setter/toString/equals/hashCode
@AllArgsConstructor // 全参构造
@NoArgsConstructor // 无参构造
public class User {
private Long id;
private String name;
}
编译期 Lombok 会帮你把缺失的代码生成到 .class
文件里,源码依然简洁。
2. 核心注解速查表
注解 | 作用 |
---|---|
@Getter / @Setter | 生成 getter / setter |
@ToString | 生成 toString |
@EqualsAndHashCode | 生成 equals 和 hashCode |
@Data | 相当于上面四个合体 |
@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor | 各种构造器 |
@Builder | 流式建造器 User.builder().id(1L).name("Tom").build() |
@Slf4j / @Log4j2 | 自动在类里注入日志对象 log.info(...) |
@Value | 不可变对象(final 字段 + 全参构造 + getter) |
3. 工作原理
- 注解处理器(Annotation Processor):在编译阶段扫描注解,通过修改抽象语法树(AST)把代码插进去,源码文件本身不会被改动。
- IDE(IntelliJ IDEA / Eclipse)需要安装 Lombok 插件,否则 IDE 会报“找不到符号”。
4. 优缺点
✅ 优点
- 极大减少样板代码,提升可读性。
- 避免手写错误(比如漏写 equals 导致 HashMap 异常)。
- 与主流构建工具(Maven/Gradle)和框架(Spring/JPA)兼容良好。
❌ 缺点
- 团队需要统一使用,否则新人会“看不懂魔法”。
- 过度使用(如
@Data
一股脑全加)可能暴露过多方法,违背封装。 - 升级 JDK 或 Lombok 版本时偶尔踩坑(但社区更新快)。
5. 快速上手
Maven 依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
IDEA 用户:
Settings → Plugins → 搜索 Lombok → Install → 重启即可。
一句话总结:**Lombok 让你把“写 Java 对象”从 50 行压缩到 5 行,代码更聚焦业务,而不是机械劳动。**Lombok 是 Java 世界里一个非常受欢迎的「代码生成工具」,也可以理解为“偷懒神器”。
一句话总结:帮你自动写样板代码(boilerplate),让实体类/POJO/Bean 瞬间瘦身。
1. 它到底干什么?
在 Java 里,一个最简单的数据类往往要写大量重复代码:
public class User {
private Long id;
private String name;
// 构造器
public User() {}
public User(Long id, String name) { ... }
// Getter / Setter
public Long getId() { ... }
public void setId(Long id) { ... }
public String getName() { ... }
public void setName(String name) { ... }
// toString
@Override
public String toString() { ... }
// equals & hashCode
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
}
用了 Lombok 后,只需:
@Data // 自动加上 getter/setter/toString/equals/hashCode
@AllArgsConstructor // 全参构造
@NoArgsConstructor // 无参构造
public class User {
private Long id;
private String name;
}
编译期 Lombok 会帮你把缺失的代码生成到 .class
文件里,源码依然简洁。
2. 核心注解速查表
注解 | 作用 |
---|---|
@Getter / @Setter | 生成 getter / setter |
@ToString | 生成 toString |
@EqualsAndHashCode | 生成 equals 和 hashCode |
@Data | 相当于上面四个合体 |
@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor | 各种构造器 |
@Builder | 流式建造器 User.builder().id(1L).name("Tom").build() |
@Slf4j / @Log4j2 | 自动在类里注入日志对象 log.info(...) |
@Value | 不可变对象(final 字段 + 全参构造 + getter) |
3. 工作原理
- 注解处理器(Annotation Processor):在编译阶段扫描注解,通过修改抽象语法树(AST)把代码插进去,源码文件本身不会被改动。
- IDE(IntelliJ IDEA / Eclipse)需要安装 Lombok 插件,否则 IDE 会报“找不到符号”。
4. 优缺点
✅ 优点
- 极大减少样板代码,提升可读性。
- 避免手写错误(比如漏写 equals 导致 HashMap 异常)。
- 与主流构建工具(Maven/Gradle)和框架(Spring/JPA)兼容良好。
❌ 缺点
- 团队需要统一使用,否则新人会“看不懂魔法”。
- 过度使用(如
@Data
一股脑全加)可能暴露过多方法,违背封装。 - 升级 JDK 或 Lombok 版本时偶尔踩坑(但社区更新快)。
5. 快速上手
Maven 依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
IDEA 用户:
Settings → Plugins → 搜索 Lombok → Install → 重启即可。
一句话总结:Lombok 让你把“写 Java 对象”从 50 行压缩到 5 行,代码更聚焦业务,而不是机械劳动。