Lombok使用

时间:2022-06-19
本文章向大家介绍Lombok使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1  介绍

Lombok是一个简单的Java库,该工具可以通过注解自动地提供一些方法,简化开发。比如编写POJO时需要为每个属性提供getter()方法和setter()方法,这就可以使用Lombok实现。

2  配置

Lombok只是一个小工具,要使用它非常简单,如果使用的是IDEA的话可以直接在IDE中下载安装插件,然后在项目中依赖即可。

安装Lombok插件:

引用依赖:

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

3  使用方法

Lombok使用注解提供功能,有14个注解,在对应的类、方法或者属性上使用对应的注解即可。

Lombok的最大的优点就是不用编写大量的版式代码,比如我们项目中有许多POJO,那么为每个pojo编写getter()、setter()、toString()方法是非常枯燥的事情,虽然可以使用IDE自带的代码生成工具来生成这些方法,但还是不够简便。

Lombok工具提供更加强大的功能,你在需要什么方法时,只需要添加注解即可。而且提供的方法补全比IDE自带的要多一些。

3.1  @Setter

该注解可以注解类,也可以注解属性。

注解类时会为类中的每个属性默认生成setXxx(Xxx xxx)方法;注解属性时为这个属性生成setXxx(Xxx xxx)方法。

3.2  @Getter

该注解和@Setter类似,可以注解类,也可以注解属性。

注解类时会为类中的每个属性默认生成getXxx()方法;注解属性时为这个属性生成getXxx()方法。这不是绝对的,如果属性是布尔类型,那么生成的方法是isXxx()而不是getXxx()。

3.3  @Log

日志注解,注解在类上。可以使用日志注释对任何类进行注释,以使lombok生成记录器字段。而且@Log有许多变体:

@CommonsLog  @Flogger  @JBossLog  @Log  @Log4j  @Log4j2  @Slf4j  @XSlf4j

默认情况下,记录器的主题(或名称)将是使用@Log注释注释的类的类名。可以通过指定topic参数来自定义。例如: @Log4j(topic="hello")。

3.4  @AllArgsConstructor

该注解用在类上,自动为该类提供一个全参构造函数。注意:默认不提供无参构造。

3.5  @NoArgsConstructor

该注解用在类上,自动为该类提供一个无参构造函数。

3.6  @EqualsAndHashCode

该注解用在类上,自动为该类提供Equals()方法和HashCode()方法。比如,如果对象需要放进HashMap,我们可以简单的为它的类添加这个标签即可。

3.7  @NonNull

注解在属性上或者方法的入参上,用于属性非空检查。

如果注解在方法的入参上,会在方法体中生成一个null检查(if语句),如果为空,抛出NullPointerException异常。

3.8  @CleanUp

注解在属性上,保证为该属性分配的资源被释放。比如输入输出流就可以添加该注解。

如果在局部变量上添加该注解,那么后续代码都将自动被try/catch块包裹,以保证资源得到释放。

3.9  @ToString

注解在类上,为该类自动生成toString()方法。默认将所有非静态变量以key-value形式输出。但该注解提供三个属性可供配置:

  • includeFieldNames:是否包含属性名称。默认为true,如果设置为false则只是将属性的值以Set的形式输出。
  • exclude:排除指定字段
  • callSuper:输出父类属性。注意:父类也要使用该注解或者提供有toString()方法,否则输出的是父类的内存地址。

3.10  @RequiredArgsConstructor

该注解使用在上,为该类生成一个构造方法--参数是该类中所有被@NonNull注解的变量或者被final修饰的变量。

3.11  @Value

这个注解使用在上,会生成含所有属性的构造方法,所有属性的getter() 方法、equals()方法、hashCode()方法、toString() 方法。  注意:没有setter()方法

3.12  @Data

注解在类上,该注解是最常用的注解,它结合了@ToString,@EqualsAndHashCode, @Getter和@Setter。本质上使用@Data注解,类默认有@ToString和@EqualsAndHashCode以及每个字段都有@Setter和@Getter。该注解也会生成一个公共构造函数,以所有@NonNull和final的属性作为参数。

3.13  @SneakyThrows

@#¥%……&*     这是个什么东东?没用过。

3.14  @Synchronized

@#¥%……&*     这是个什么东东?没用过。