Spring Boot(十三):Lombok插件

9 篇文章 0 订阅
1 篇文章 0 订阅

Lombok简介

Lombok是一种可以通过使用注解来消除Java中的冗余代码的实用工具。通过Lombok的注解,开发人员可以不用再写getter、setter、equals等方法,Lombok将在编译时自动生成。

Lombok安装

1、Lombok的安装

1)安装Lombok

Preferences > Settings > Plugins > Browse repositories... > Search for "lombok" > Install 

或者

Preferences > Plugins > Search for "lombok" > Install 

2)启用Annotation Processors

Preferences > Settings > Build, Execution, Deployment > Compiler > Annotation Processors > 选中"Enable annotation processing"

或者

Preferences > Build, Execution, Deployment > Compiler > Annotation Processors > 选中"Enable annotation processing"

3)重启IDEA后,插件生效

2、IntelliJ Idea 2020.3版本已经默认集成了Lombok,不用再手动安装啦

Lombok使用

1、添加依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

SpringBoot 2.1.x版本后无需指定Lombok版本,SpringBoot在spring-boot-dependencies中已经内置

<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <optional>true</optional> 
</dependency> 

2、注解

Lombok中有很多注解,这些注解让我们可以更加方便的编写Java代码,常用注解如下:

1)@Getter、@Setter

这两个注解如果作用于类上,会生成所有成员变量的getter/setter方法,如果作用于成员变量上,会生成该成员变量的getter/setter方法,可以设定访问权限及是否懒加载等。之前即使我们使用IDEA自动生成getter/setter方法,如果类属性的类型和名称改了,又要重新生成或者挨个修改getter/setter方法也是一件很麻烦的事情。

2)@ToString

把所有类属性都编写到toString方法中方便打印日志,当我们新增/修改类属性时,还需要再去维护这个方法的实现,是一件比较麻烦的事情。使用@ToString注解可以自动生成toString方法,默认会包含所有类属性,使用@ToString.Exclude注解可以排除属性的生成。

3)@EqualsAndHashCode

使用@EqualsAndHashCode注解可以自动生成equals和hashCode方法,默认包含所有类属性,使用@EqualsAndHashCode.Exclude可以排除属性的生成。

4)@NonNull

主要作用于成员变量和参数中,做非空判断,如果传入空值会直接抛出异常NullPointerException。

5)@NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor

这三个注解作用于类上,用于生成构造函数,有staticName、access等属性,staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。

@NoArgsConstructor:生成无参数构造函数

@RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造函数

@AllArgsConstructor:生成包含所有参数的构造函数

6)@Data

作用于类上,是以下注解的集合:@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor

7)@Builder

作用于类上,将类转变为建造者模式,建造者模式加链式调用,创建对象非常方便

8)@Log

作用于类上,生成日志变量,针对不同的日志实现产品,有不同的注解,如@Log、@Log4j、@Log4j2、@Slf4j等

9)使用注解的示例如下:

@Data
@Builder
@TableName(value = "article")
public class ArticlePo {

    @TableId(type = IdType.AUTO)
    private Integer id;
    private String articleId;
    private String title;

}

不常使用注解如下:

1)@val

使用val注解可以取代任意类型作为局部变量,这样我们就不用写复杂的ArrayList和Map.Entry类型了,当我们使用了val注解后,Lombok会从局部变量的初始化表达式推断出具体类型。

2)@Value

使用@Value注解可以把类声明为不可变的,声明后此类相当于final类,无法被继承,其属性也会变成final属性。

3)@Cleanup

当我们在Java代码中使用资源时,需要在使用后关闭资源,使用@Cleanup注解可以自动关闭资源,这个注解针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象。

4)@SneakyThrows

可以对受检异常进行捕捉并抛出

5)@Synchronized

作用于方法级别,可以替换synchronize关键字或lock锁

6)@With

使用@With注解可以实现对原对象进行克隆,并改变其一个属性,使用时需要指定全参构造方法

Lombok优缺点

优点:帮助开发人员消除Java的冗长,节省开发人员的时间

缺点:污染了Javabean,团队中一人使用,其他人也要安装插件

Delombok工具

Delombok工具是Lombok出的一个神器,如果你想把Lombok注解都去掉,它可以让你使用一个命令就把Lombok注解实现的类文件转换为不使用Lombok的Java源文件。

若您觉得还可以,请帮忙点个赞,更多内容,请关注公众号“图南随笔”

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值