Lombok 介绍
Lombok 官方网站地址:https://projectLombok.org
Lombok 是一个 Java 的类库,可以通过注解等方式插入到项目代码中,来增加 Java 代码的功能,只需要通过指定的注解,就可以实现指定的功能,极大的简化代码编写。
Lombok 能通过注解的方式,在编译期间自动为类属性生成构造函数、get/set 方法等内容,保持代码简洁的情况下保证类信息的完整性。
Lombok 引入
Lombok 插件支持 IDEA 插件安装,安装插件后可以在代码中更好的使用 Lombok 带来的增强功能,此外,Lombok 还可以在 Eclipse、MyEclispe 等编译器中安装使用,以此保证 Lombok 注解在编译阶段发挥作用。
IDEA 安装插件
- 通过文件 -> 设置,找到 Plugins,搜索 Lombok 插件,下载安装后重启 IDEA 生效。
- 安装 Lombok 插件后,可与在插件设置中配置是否开启,在 File -> Setting > Build,Execution,Deployment 下找到 Annotation Processors,勾选 Enable annotation processing 即可。
1.2 maven 引入依赖
Lombok 还可以通过 maven 坐标引入相关依赖信息
<!--Lombok依赖-->
<dependency>
<groupId>org.projectLombok</groupId>
<artifactId>Lombok</artifactId>
<version>1.18.0</version>
</dependency>
2. Lombok常用注解
@Data 注解
Lombok 的 @Data 注解可以说是使用最频繁的,@Data 注解标注在一个类上,可以为当前类属性自动生成对应的 getter()、setter()、toString() 等方法,大大减少了开发过程的代码量,让类定义更加简洁。
Lombok 中还有 @Getter
/@Setter
/@ToString
三个独立的注解,用于类中更精细的控制。
@Log4j 注解
在类中进行代码开发操作时,如果想要输出日志,则需要在类种进行如下的定义:
public static final Logger log = LoggerFactory.getLogger(Controller.class);
这样对于项目中繁多的类,每个都需要单独创建日志对象,太浪费时间。
如果项目使用 Lombok ,就可以使用 @Log4j 注解来解决这个问题,只需要在类上使用 @Log4j 注解,就会自动创建一个名为 log 的 Logger 对象,可以直接使用 log 对象进行日志输出。
@log4j
public class Test{
public void get(){
log.info("test");
}
}
@NoArgsConstructor / @AllArgsConstructor
@NoArgsConstructor 代表为当前类生成一个无参构造方法;
@AllArgsConstructor 则是生成一个所有参数的构造方法
@NonNull
@NonNull 注解可以用于字段或者方法的参数,用来表示当前字段或参数不允许为 null,如果为 null 会抛出异常信息。
@Accessors 注解
@Data 注解可以为类的属性自动生成 getter/setter 等方法
而使用 @Accessors 注解可以用于控制类自动生成的 getter 和 setter 方法的形式,
@Accessors 注解可以设置的参数有:
@Accessors(fluent = true)
,代表 getter 和 setter 方法名都是属性名,且s etter 方法返回当前对象
@Data
@Accessors(fluent = true)
class User {
private Integer id;
private String name;
// 生成的 getter 和 setter 方法如下,方法体略
//方法名与属性名相同,根据参数区分 get 和 set,且 setter 方法返回类对象本身
public Integer id(){}
public User id(Integer id){}
public String name(){}
public User name(String name){}
}
@Accessors(chain = true)
,仅代表 setter 方法返回当前对象,方法名称为默认驼峰类型@Data @Accessors(chain = true) class User { private Integer id; private String name; // 生成的 setter 方法如下,方法体略,get方法略 public User setId(Integer id){} public User setName(String name){} }
@Accessors(prefix = "f")
,代表 getter 和 setter 方法会忽略属性中的指定 “f”前缀 (满足驼峰命名)@Data @Accessors(prefix = "f") class User { private Integer fId; private String fName; // 生成的getter和setter方法如下,方法体略 public Integer id(){} public void id(Integer id){} public String name(){} public void name(String name){} }
注意: @Accessors 注解只是对 setter 和 getter 方法形式进行控制,仍然需要使用 Lombok 的 @Data注解来自动生成 getter 和 setter 方法。
@Builder
作用于类上,将类转变为建造者模式。
@Builder 注解单独使用就能完成建造者模式的实现,不需要使用 @Data 注解配合。
需要注意的是,在使用 @Builder 注解标注的类,默认只会定义全参数构造函数,如果想要定义无参构造方法,则需要与 @AllArgsConstructor/@NoArgsConstructor 注解配合使用。