Lombok是一个极为强大的Java注解库,帮助开发者减少样板代码的编写,如getter
/setter
、构造方法、equals()
、hashCode()
等方法。Lombok在编译时自动生成这些代码,使Java代码更加简洁、易读。
1 Lombok概述
Lombok存在如下优缺点:
- 优点:
- 减少样板代码:自动生成
getter
、setter
等方法,减少代码量 - 提高可读性:代码更加简洁,关注业务逻辑而非样板代码
- 减少错误:自动生成的方法不容易出错
- 易于维护:添加新字段时,相关方法会自动更新
- 支持链式调用:
@Accessors(chain = true)
支持链式调用 - 提高开发效率:减少重复编写样板代码的时间
- 减少样板代码:自动生成
- 缺点
- IDE支持问题:某些IDE可能需要安装插件才能正确识别Lombok生成的代码
- 学习成本:需要学习Lombok的注解和用法
- 编译时生成:代码在编译时生成,可能影响编译速度
- 调试困难:生成的代码不在源代码中,调试时可能不太直观
- 版本兼容性:不同版本的Lombok可能有兼容性问题
- 可能隐藏问题:自动生成的方法可能掩盖一些设计问题
2 导入与配置
以Maven为例,在pom.xml
中添加以下依赖(其中版本号lombok.version
事先在<properties>
中定义):
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
若使用IDE(如IntelliJ IDEA),需安装Lombok插件并启用注解处理,流程如下:
- 安装、启用插件:进入IDE设置的插件市场(
File > Settings > Plugins
),搜索“Lombok”并安装,重启IDE后插件启用。 - 启用注解处理:打开IDE设置中的注解处理器(
File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors
),勾选“Enable annotation processing”,并选择“Obtain processors from project classpath”。
3 主要注解
Lombok全部注解如下表所示:
注解 | 功能描述 |
---|---|
@Data |
生成所有字段的getter /setter 、toString() 、equals() 和hashCode() 方法,以及无参构造方法 |
@Getter |
生成所有字段的getter 方法 |
@Setter |
生成所有字段的setter 方法 |
@NoArgsConstructor |
生成无参构造方法 |
@AllArgsConstructor |
生成全参数构造方法 |
@Builder |
生成建造者模式 |
@Slf4j |
自动生成日志对象(log ) |
@EqualsAndHashCode |
生成equals() 和hashCode() 方法 |
@ToString |
生成toString() 方法 |
@RequiredArgsConstructor |
生成包含所有标记为@NonNull 或final 字段的构造方法 |
@Value |
生成不可变类(所有字段均为private final ) |
@SneakyThrows |
自动处理受检异常 |
@Accessors |
控制生成的访问器(getter /setter )的行为 |
@Builder.Default |
为@Builder 生成的建造者设置默认值 |
@SuperBuilder |
处理继承关系中的建造者模式 |
@NonNull |
标记字段或参数不能为null |
@Cleanup |
自动关闭资源 |
@Generated |
标记生成的代码 |
@UtilityClass |
生成工具类 |
@Experimental |
标记实验性功能 |
@Lombok |
自定义注解 |
@FieldNameConstants |
生成字段名称常量 |
@With |
生成不可变对象的with 方法 |
@Log |
生成日志对象(通用) |
@CommonsLog |
生成Apache Commons Logging日志对象 |
@Flogger |
生成Google Flogger日志对象 |
@JBossLog |
生成JBoss日志对象 |
@Log4j |
生成Log4j日志对象 |
@Log4j2 |
生成Log4j2日志对象 |
@XSlf4j |
生成SLF4J扩展日志对象 |
4 应用案例
Spring Boot+SSM单体项目开发全流程详解(神威食客 - Hyplus Foodie)
5 常见问题
“java: 找不到符号 符号: 变量 log 位置: 类....
”问题:导包失败或未启用注解处理,请重复导入与配置流程。
《Lombok注解库基本教程与疑难解析》有1条评论