当我们创建POJO类时,都会毫不犹豫的让开发工具对域变量生成set,get方法,虽然不是我们自己手动添加,但每个类都要做重复的生成操作,而且当变量名或者是修饰符改变了,我们就要删除set,get方法重新生成。那么我们怎么做能提高生产效率,不做重复工作呢?对,就是lombok。
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
花个两分钟安装一下也是很值的。
安装
一. 要使用注解,必须引入lombok提供的库
maven引入lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
二. 开发工具插件安装(这里使用的是IDEA)
安装好之后会有提示重启IDEA,重启即可。
常用注解
@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
@ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
@EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode
@NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。
staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
@NoArgsConstructor:生成无参构造器;
@RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器;
@AllArgsConstructor:生成全参构造器
@Data:作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
@Builder:作用于类上,将类转变为建造者模式
@Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:
使用
下面举个例子看一下如何使用:
在pojo包下创建了一个Department类,有两个字段
package com.cc.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 部门表
*/
//@Data:作用于类上,是以下注解的集合:
// @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
@Data
@NoArgsConstructor //无参构造
@AllArgsConstructor //有参构造
public class Department {
private Integer id;
private String departmentName;
}
可以打开左边Structure看一下是否生成注解要的方法。
这样就成功了。