0%

Lombok常用注解

Lombok常用注解

Lombok通过注解的方式省掉大量代码的编写,尤其对于POJO类的set()、get()、toString()等。在源代码只需要加上相应的注解,编译过程中Lombok插件就会自行生辰相关代码。减少冗杂且重复的代码,简化开发易于修改。本文即为对Lombok常见注解的介绍及对生成的代码的展示。

安装Lombok

  在菜单栏依次选择File->Settings->Plugins,输入Lombok搜索该插件,得到搜索结果选择Lombok进行安装即可。安装完毕提示重启即安装成功。

  Maven项目中引入Lombok依赖的编译支持,在pom文件中的dependences里添加即可

1
2
3
4
5
6
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>

常用注解

  • @Data
  • @Setter
  • @Getter
  • @Log4j
  • @AllArgsConstructor
  • @NoArgsConstructor
  • @EqualsAndHashCode
  • @NonNull
  • @Cleanup
  • @ToString
  • @RequiredArgsConstructor
  • @Value
  • @SneakyThrows
  • @Synchronized

注解作用

@Data

注解在上,提供类所有属性的get和set方法,此外还提供了equals、canEqual、toString方法以及默认构造函数

img

@Setter

  • 注解在上,提供类的默认构造函数以及所有属性的set方法
  • 注解在属性上,提供类的默认构造函数以及所有属性的set方法

image-20200816125332552

@Getter

  • 注解在上,提供类的默认构造函数以及所有属性的get方法

  • 注解在属性上,提供类的默认构造函数以及所有属性的get方法

    image-20200816125753543

@Log4j

  • 注解在上,提供类的默认构造函数以及该类的日志对象

    如果项目中没有对应的日志依赖,建议pom文件中加入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <dependency>  
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.15</version>
    <exclusions>
    <exclusion>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    </exclusion>
    <exclusion>
    <groupId>javax.jms</groupId>
    <artifactId>jms</artifactId>
    </exclusion>
    <exclusion>
    <groupId>com.sun.jdmk</groupId>
    <artifactId>jmxtools</artifactId>
    </exclusion>
    <exclusion>
    <groupId>com.sun.jmx</groupId>
    <artifactId>jmxri</artifactId>
    </exclusion>
    </exclusions>
    <scope>compile</scope>
    </dependency>

@AllArgsConstructor

  • 注解在上,提供含类全部属性的构造函数

    image-20200816132129118

@NoArgsConstructor

  • 注解在上,提供类的默认构造函数

    image-20200816132510412

@EqualsAndHashCode

  • 注解在上,提供类的默认构造函数equals方法、canEqual方法、HashCode方法

    image-20200816132954099

@NonNull

  • 注解在上,提供类的默认构造函数以及如果有属性为NULL则抛NullPointException

  • 注解在属性上,提供类的默认构造函数以及该属性为NULL则抛NullPointException

    image-20200816133630219

@Cleanup

  • 注解在属性上,注解在那种使用完需要close的对象,会自动在finally里代码块中生成close代码

    image-20200816135522627

@ToString

  • 注解在上,提供类的默认构造函数以及**toString()**方法

    image-20200816135750664

@RequiredArgsConstructor

  • 注解在属性上,提供类中final修饰和**@NONULL注解的所有属性的构造函数**

    image-20200816140650718

@Value

  • 注解在上,提供含类全部属性的构造函数以及get()**、equals()hashCode()toString()**方法

    image-20200816142558874

@SneakyThrows

  • 注解在方法上,作用是将方法内的代码块用try-catch包围起来,并以@SneakyThrows(Exception.class)的形式指定抛出Exception的类型。同时也会生成默认构造函数。

    image-20200816142943894

@Synchronized

  • 注解在方法上,与在方法名左边直接加synchronized关键字效果类似,对于静态方法和实例方法,synchornized关键字的锁对象分别是class对象和this对象;**@Synchronized则对应的锁对象分别是私有静态final对象lock和私有final对象** lock,同时也可以以@Synchronized("属性名")形式自定义锁对象。同时也会生成默认构造函数。

    image-20200816163423807

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道