Lombok库
Lombok是一个Java库,通过注解的方式自动生成代码,减少模板代码的编写,提高开发效率。
作用
- 减少样板代码的编写
- 提高代码可读性
- 降低维护成本
- 减少代码量
传统JavaBean写法
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;
}
// getter和setter方法
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;
}
// toString方法
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
// equals和hashCode方法
@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;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private int age;
private String email;
}
环境配置
Maven配置
在pom.xml
中添加以下依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
IntelliJ IDEA配置
- 安装Lombok插件
- 打开 Settings (Preferences)
- 选择 Plugins
- 搜索 "Lombok"
-
安装插件并重启IDE
-
启用注解处理
- 打开 Settings (Preferences)
- 选择 Build, Execution, Deployment > Compiler > Annotation Processors
- 勾选 "Enable annotation processing"
Lombok注解说明
注解 | 作用 | 替代的传统代码 |
---|---|---|
@Data | 生成所有字段的getter/setter、toString、equals、hashCode方法 | 所有字段的getter/setter、toString、equals、hashCode方法 |
@Getter | 生成所有字段的getter方法 | 所有字段的getter方法 |
@Setter | 生成所有字段的setter方法 | 所有字段的setter方法 |
@NoArgsConstructor | 生成无参构造函数 | 无参构造函数 |
@AllArgsConstructor | 生成全参构造函数 | 全参构造函数 |
@RequiredArgsConstructor | 生成包含final字段的构造函数 | 包含final字段的构造函数 |
@ToString | 生成toString方法 | toString方法 |
@EqualsAndHashCode | 生成equals和hashCode方法 | equals和hashCode方法 |
@Builder | 实现建造者模式 | 建造者模式相关代码 |
@Slf4j | 自动创建日志对象 | private static final Logger log = LoggerFactory.getLogger(XXX.class) |
@Value | 生成不可变类(所有字段都是final) | final字段、getter方法、全参构造函数等 |
注意事项
- Lombok注解在编译时生成代码,不会影响运行时性能
- 需要IDE安装Lombok插件才能正常使用
- 团队开发时,需要确保所有成员都安装了Lombok插件
- 某些特殊场景可能需要手动编写代码,不要过度依赖Lombok
- 建议在项目中统一Lombok的版本,避免版本不一致导致的问题