第三节 集成Lombok

Lombok的优缺点

  • 优点:

提高开发效率,自动生成getter/setter、toString、builder 等,尤其是类不断改变过程中,如果使用 IDEA 自动生成的代码,我们则需要不停的删除、重新生成,使用 Lombok 则自动帮助我们完成
让代码变得简洁,不用过多的去关注相应的模板方法,其中 getter/setter、toString、builder 均为模板代码,写着难受,不写还不行,而且在 java 14 已经开始计划支持 record, 也在帮我们从原生方面解决这种模板代码
属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等

  • 缺点:

不同开发人员同时开发同一个使用 Lombok 项目、需要安装 Lombok 插件
不利于重构属性名称,对应的 setter、getter、builder, IDEA 无法帮助自动重构
有可能降低了源代码的可读性和完整性,降低了阅读源代码的舒适度,谁会去阅读模板代码呢

解决编译时出错问题

编译时出错,可能是没有启用注解处理器。Build, Execution, Deployment > Annotation Processors > Enable annotation processing。设置完成之后程序正常运行。

避坑指南

  • 尽量不要使用 @Data 注解, 这个注解太全了,不利于维护,除非你知道你在干什么
  • Java 默认机制如果有其他构造器,则不会生成无参构造器,在使用 @AllArgsConstructor 注解时,记得加上 @NoArgsConstructor
  • 如果类定义还在变化阶段,不建议使用 @AllArgsConstructor 注解
  • @Setter@Getter 注解如果需要可以缩小使用范围
  • @ToString 注解默认不会生成父类的信息,如果需要生成需要 @ToString(callSuper = true)
  • @RequiredArgsConstructor 和 @NoArgsConstructor 尽量不要一起使用,无参构造器无法处理 @NonNull,但在序列化/反序列化的还是需要提供无参的
  • 当团队决定不再使用 Lombok 的时候,可以使用 Lombok 插件的 Delombok 一键去除,在 Refactor > Delombok 中

再次注意- @AllArgsConstructor 尽量不要使用

全部注解

@NonNull 注解在字段和构造器的参数上。注解在字段上,则在 setter, constructor 方法中加入判空,注意这里需要配合 @Setter、@RequiredArgsConstructor、@AllArgsConstructor 使用;注解在构造器方法参数上,则在构造的时候加入判空
@Cleanup 注解在本地变量上。负责清理资源,当方法直接结束时,会调用 close 方法
@Setter 注解在类或字段。注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法,同时可以指定生成的 setter 方法的访问级别
@Getter 使用方法同 @Setter,区别在于生成的是 getter 方法
@ToString 注解在类上。添加toString方法
@EqualsAndHashCode 注解在类。生成hashCode和equals方法
@NoArgsConstructor 注解在类。生成无参的构造方法。
@RequiredArgsConstructor 注解在类。为类中需要特殊处理的字段生成构造方法,比如 final 和被 @NonNull 注解的字段。
@AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@Value 注解在类和属性上。如果注解在类上在类实例创建后不可修改,即不会生成 setter 方法,这个会导致 @Setter 不起作用
@Builder 注解在类上,生成构造器
@SneakyThrows
@Synchronized 注解在方法上,生成同步方法
@With
日志相关: 注解在类,生成 log 常量,类似 private static final xxx log

  • @Log java.util.logging.Logger
  • @CommonsLog org.apache.commons.logging.Log
  • @Flogger com.google.common.flogger.FluentLogger
  • @JBossLog org.jboss.logging.Logger
  • @Log4j org.apache.log4j.Logger
  • @Log4j2 org.apache.logging.log4j.Logger
  • @Slf4j org.slf4j.Logger
  • @XSlf4j org.slf4j.ext.XLogger

关于所有的注解可以查看 https://projectlombok.org/features/all

使用

  • 添加maven依赖
<!--lombok插件-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
  • 安装插件

参考

https://www.jb51.net/article/206603.htm

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值