- 简介
- 概述
- 配置Lombok
- 引入依赖
- IDEA配置插件
- 懒人一键
- 常用注解
Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。 它通过注释实现这一目的。通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。
一般也就用于javabean上,说白了,就是让你不用写get、set之类的重复度高比较冗余的方法,让你的代码好看不少
优点:
- 减少大量模版代码,如get和set方法,提高开发效率
- 增加代码可读性
- 减少代码冲突的可能性,也方便处理冲突
- 添加新属性后自动善后,例如添加新属性后不用重新修改toString和equal这些方法
缺点:
- 需要IDEA对lombok的支持,要安装相应插件
- 无法修改get/set这些方法,虽然并不建议在它们中编写业务逻辑
- 无法查看某个get和set方法的引用过程,不方便调试
- 一人使用,强制要求所有开发人员安装lombok插件
总结:利弊参半
如果是一个新项目,建议使用,可以减少重复劳动,加快开发效率
如果是一个老项目,以前从未使用过,那最好不要使用。修改代码成本太高,不利于维护。
配置Lombok 引入依赖最新maven版本:
IDEA配置插件org.projectlombok lombok 1.18.20 provided
进入File–Settings–Plugins,搜索Lombok,你会在上方的intalled栏里上找到它,确保打上勾即可。
再进入Bulid,Execution,Deplayment–Compiler–Annotation Porcessors,开启 Annocationprocessing,让Lombok注解在编译阶段起到作用。
懒人一键大部分时候,你只需要在你的pojo类上加上三个注解即可
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {...}
-
**@Data:**注解在类上,这是一个集合体,它包含了:
- @Getter
- @Setter
- @RequiredArgsConstructor
- @ToString
- @EqualsAndHashCode
- @lombok.Value
-
**@NoArgsConstructor:**生成无参构造器
-
@AllArgsConstructor: 生成全参构造器
以后你的pojo类就不用费尽心思用idea生成一堆重复的代码,可以美观地写上自己的属性和方法啦!
常用注解lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解。
这些注解是作用在预编译器上的
- **@Data:**注解在类上,这是一个集合体,它包含了:
- @Getter
- @Setter
- @RequiredArgsConstructor
- @ToString
- @EqualsAndHashCode
- @lombok.Value
一般pojo类用到@Data、@AllArgsConstructor和@NoArgsConstructor
-
**@Value:**注解在类上,相当于同时使用
- @Getter
- @FieldDefaults(makeFinal=true,level=AccessLevel.PRIVATE)
- @AllArgsConstructor
- @ToString
- @EqualsAndHashCode
@Value注解适用于常见不可变对象,即把成员变量全部设定为private、final修饰,且不生成对应的set方法。
-
**@Getter / @Setter:**作用于成员变量(单个属性)或类(全部属性)上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等
@Getter @Setter private int age; @Setter(AccessLevel.PROTECTED) private String name;
- **@NoArgsConstructor:**作用于类,生成无参构造器,(可采用access控制访问级别,如@NoArgsConstructor(access=lombok.AccessLevel.PROTECTED))。
- @AllArgsConstructor: 作用于类,生成全参构造器
- @RequiredArgsConstructor: 注解在类上,生成包含final和@NonNull注解的成员变量的构造器
PS:
- @NoArgsConstructor和@AllArgsConstructor可同时标注
- @RequiredArgsConstructor只能和@AllArgsConstructor同时标注;
- @RequiredArgsConstructor配合@NonNull同时使用时,只有标注了@NonNull的字段才会被纳入构造器.
- @ToString: 作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,exclude属性排除某些字段
@ToString(of = {"name,age"}), exclude = {"sex"})
public class Person() {...}
- **@EqualsAndHashCode:**作用于类,覆盖默认的equals和hashCode
- **@NonNull:**避免空指针
//写在形参前 public NonNullExample(@NonNull User user)
- **@Log:**作用于类上,生成日志
- **@Cleanup:**自动调用close()方法
@Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream(args[1]);



