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
@#¥%……&* 这是个什么东东?没用过。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法