1.介绍
lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过lombok注解减少getter、setter等方法的编写,在更改实体类时只需要修改属性即可,减少了很多重复代码的编写工作。本文将介绍IntelliJ IDEA中lombok插件的安装和配置以及简单的使用方法。
2.安装
在Idea的插件商店中搜索“lombok”安装即可,安装完毕后需重启Idea。
安装lombok插件
3.配置
然后在Settings设置页面,我们点击Build,Execution,Deployment-->选择Compiler-->选中Annotation Processors,然后在右侧勾选Enable annotation processing即可。
配置4.使用
使用前需要说明的是安装的插件只是一个调用,就像使用maven插件一样,本机需要安装maven才行。我们在使用lombok前也需要添加lombok的依赖。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
接下来编辑一个实体类TbMsg,添加三个属性,最后在类上添加@Data属性,这个注解可以帮我们在.class文件中生成类中所有属性的get/set方法、equals、canEqual、hashCode、toString方法等。
package com.zhuliming.entity;
import lombok.Data;
/**
* 实体类
*/
@Data
public class TbMsg {
private int id;
private String name;
private String msg;
}
创建一个对象,通过对象我们可以看到已经生成的方法
生成的方法也可以通过在菜单栏点击View-->Tool Windows-->Structure,便可以看到类中所有的方法了,这些都是lombok帮我们自动生成的。
生成的方法5.常用的lombok注解
常用的 lombok 注解:
@Data :注解在类上;包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能,提供类所有属性的 getter 和 setter 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setter 方法
@Getter:注解在属性上;为属性提供 getter 方法
@ToString:注解在类上;生成toString()方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。可以这样设置不包含哪些字段@ToString(exclude = "id") / @ToString(exclude = {"id","name"})
如果继承的有父类的话,可以设置callSuper 让其调用父类的toString()方法,例如:@ToString(callSuper = true)
@EqualsAndHashCode:注解在类上;生成hashCode()和equals()方法,默认情况下,它将使用所有非静态,非transient字段。但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。
@NonNull: 注解在属性上;标识属性是不能为空,为空则抛出异常。
@Slf4j :注解在类上;根据用户实际使用的日志框架生成log日志对象。
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法。当类中有final字段没有被初始化时,编译器会报错,此时可用@NoArgsConstructor(force = true),然后就会为没有初始化的final字段设置默认值 0 / false / null。对于具有约束的字段(例如@NonNull字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
@RequiredArgsConstructor:注解在类上;会生成构造方法(可能带参数也可能不带参数),如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段@RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的。
网友评论