好的,下面给你整理一份 Lombok 的完整介绍、使用方法和总结,内容包括概念、常用注解、IDE 配置、示例以及注意事项。
一、Lombok 简介
Lombok 是一个 Java 库,通过注解的方式自动生成一些常见的样板代码(boilerplate code),如:
- Getter / Setter 方法
- 构造函数
toString()
、equals()
、hashCode()
- 日志对象
- Builder 模式
特点:
- 减少样板代码,提高开发效率。
- 注解方式清晰直观,代码简洁。
- 完全兼容现有 Java 项目,无需改变业务逻辑。
- Lombok 通过 编译器插件或 IDE 插件 在编译时生成字节码。
二、Lombok 使用方法
1. 引入 Lombok 依赖
- Maven:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
- Gradle:
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.30'
annotationProcessor 'org.projectlombok:lombok:1.18.30'
}
注意:
provided
或compileOnly
表示 Lombok 只在编译期使用,不会打包到最终 jar。
2. 常用注解
2.1 Getter / Setter
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String name;
private int age;
}
// 编译后自动生成
// public String getName() {...}
// public void setName(String name) {...}
// public int getAge() {...}
// public void setAge(int age) {...}
2.2 @Data
@Data
是一个组合注解,相当于同时加上:
@Getter
、@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
// 自动生成 Getter / Setter / toString / equals / hashCode / 构造函数
2.3 构造函数
@NoArgsConstructor
:无参构造函数@AllArgsConstructor
:全参构造函数@RequiredArgsConstructor
:为final
或@NonNull
字段生成构造函数
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.NonNull;
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
@NonNull
private String name;
private int age;
}
2.4 @Builder
- 实现建造者模式,链式构造对象
import lombok.Builder;
@Builder
public class User {
private String name;
private int age;
}
// 使用方式
User user = User.builder()
.name("Alice")
.age(25)
.build();
2.5 @ToString / @EqualsAndHashCode
@ToString
自动生成toString()
方法@EqualsAndHashCode
自动生成equals()
和hashCode()
方法
import lombok.ToString;
import lombok.EqualsAndHashCode;
@ToString
@EqualsAndHashCode
public class User {
private String name;
private int age;
}
2.6 @Slf4j / 日志注解
- 自动生成日志对象,避免重复写
LoggerFactory.getLogger()
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class UserService {
public void process() {
log.info("Processing user...");
}
}
3. IDE 配置
- IntelliJ IDEA:
- 安装 Lombok 插件:
File -> Settings -> Plugins -> Marketplace -> Lombok
。 - 启用注解处理器:
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors -> Enable annotation processing
。
- 安装 Lombok 插件:
- Eclipse:
- 安装 Lombok jar 文件:双击下载的
lombok.jar
,选择 Eclipse 安装目录。 - Eclipse 会自动集成 Lombok。
- 安装 Lombok jar 文件:双击下载的
没有安装插件或开启注解处理器,IDE 可能无法识别自动生成的方法,但程序仍可正常编译运行。
4. 完整示例
import lombok.Data;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j;
@Data
@Builder
@Slf4j
public class User {
private String name;
private int age;
public static void main(String[] args) {
User user = User.builder()
.name("Alice")
.age(25)
.build();
log.info(user.toString());
}
}
- 自动生成 Getter/Setter/
toString
- 支持 Builder 模式
- 支持日志输出
三、Lombok 总结
优点
- 减少样板代码:无需手动编写 Getter/Setter、构造函数等。
- 提高开发效率:代码简洁、易读。
- 兼容性好:与 Spring Boot、MyBatis 等主流框架兼容。
- 功能丰富:支持 Builder、日志注入、equals/hashCode、@Singular 集合构建等。
缺点 / 注意事项
- IDE 支持依赖插件:未配置注解处理器可能看不到生成的方法。
- 调试不直观:方法生成在编译时完成,IDE 代码跳转可能受限。
- 版本兼容问题:Lombok 和 Java 版本不兼容时可能出现编译错误。
- 过度使用:在简单类中,@Data 或 @Builder 使用过多可能导致不必要的功能生成,增加维护难度。
总结建议
- 对 实体类/DTO/VO,使用
@Data
或@Getter/@Setter
。 - 对 复杂对象构建,使用
@Builder
。 - 对 日志类,使用
@Slf4j
。 - 避免对公共 API 类滥用
@Data
,控制生成方法范围,提升安全性。
发表回复