如果你是第一次听到这个词的话,一定会想这是个什么玩意儿?那我告诉你,它可以极大的简化你的代码。我们一起来看一看它是如何简化我们代码的:
什么是Lombok
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。这是Lombok的官网地址:Lombok官网 里面有更详细的介绍。
Lombok环境安装
要想使用Lombok,需要两步:
- 首先下载Lombok插件,在idea中setting—>plugins中搜索Lombok下载插件,如下图所示,由于我已经下载,所以显示的update:
- 加入maven依赖:在pom.xml中加入:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
以上,使用的Lombok的前提就已经准备好了。
Lombok初体验
话不多说,直接上代码:
/**
* 这个类对应mongo中的一张订单表。
*/
@Data
@Document(collection = "member_order")
@Builder
public class MemberOrder implements BaseEntity<ObjectId> {
/**最多记录数目,超出直接丢弃,汇总表依赖于OrderRecord对应表离线处理*/
private static final int MAX_RECORD = 500;
/**会员ID*/
private ObjectId id;
/**不考虑冗余,只要OrderRercord.id*/
@Singular
private List<String> orderIds;
private Date createTime;
private Date updateTime;
}
这个类使用到了Lombok中的@Data、@Builder和@Singular三个注解。
- @Data注解在类,会生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
- @Builder注解相当于在这个类开启builder 模式,而我们只需要加这么一个简单的注解。熟悉builder模式的应该知道没有这个注解我们需要添加多少代码,使用方法如下:
MemberOrder build = MemberOrder.builder().createTime(new Date())
.orderIds(Collections.emptyList()).build();
- @Singular注解会对 List、Set 等集合类构建 addOne、addAll、clear方法。
Lombok常用注解
@Setter:注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
@Getter:使用方法同上,区别在于生成的是getter方法。
@ToString:注解在类,添加toString方法。
@NonNull:注解在方法属性或者构造器上,帮忙判断参数是否为空,可以避免空指针。
@EqualsAndHashCode:注解在类,生成hashCode和equals方法。
@NoArgsConstructor:注解在类,生成无参的构造方法。
@RequiredArgsConstructor:注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
@AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。
@Data:注解在类,相当于 @Getter + @Setter + @ToString + @EqualsAndHashCode+@RequiredArgsConstructor
@Slf4j:注解在类,生成log变量,严格意义来说是常量。
@Cleanup 告别释放资源,可以在创建各种流时加上这个注解。
@Builder注解在类,相当于在这个类开启builder 模式。
@Singular注解在集合类字段上,会构建 addOne、addAll、clear方法。
Lombok优缺点
- 优点:通过注解的形式自动生成大量的方法,简化了我们的代码,提高了开发效率;
- 缺点:不支持多种构造器的重载;代码可读性变差;
总结
在我看来,Lombok简单实用,能够提高我们的开发效率。然鹅缺点肯定是有的,随着使用的人越来越多,慢慢优化,才能使它更加强大。
本篇结束,如果有什么不明白或者发现问题的,欢迎评论或者私信我,谢谢各位!