注:使用先需先安装lombok插件
1. maven
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
2. 常用注解API
注解 | 标注位置 | 注解描述 | 属性 | 属性描述 |
@Data | 类上 | 所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。 | staticConstructor | 指定静态构造方法的方法名,默认不生成静态构造方法 |
@Getter | 属性上/类上 | 属性上:单独为该属性添加getter方法 类上:为该类所有属性添加getter方法 | value | 设置访问级别 |
lazy | 设置赖加载,get值时才创建对象。使用在private final 修饰的属性上 | |||
onMethod | 在getter方法上添加注解,例如:onMethod = @__({@NonNull}) | |||
@Setter | 属性上/类上 | 属性上:单独为该属性添加setter方法 类上:为该类所有属性添加setter方法 | value | 设置访问级别 |
onMethod | 在setterr方法上添加注解,例如:onMethod = @__({@NonNull}) | |||
onParam | 在setter方法参数上添加注解,例如:onParam= @__({@NonNull}) | |||
@EqualsAndHashCode | 类上 | 生成equals(Object other) 和 hashCode()方法 | exclude | 排除一些属性 |
of | 指定仅使用哪些属性 | |||
callSuper | 为true时调用父类的方法 | |||
doNotUseGetters | 为true时有getter方法时不用getter方法 | |||
onParam | 在方法参数上添加注解,例如:onParam= @__({@NonNull}) | |||
onlyExplicitlyIncluded | 为true时只包含被@EqualsAndHashCode.Include注解标识了的字段 | |||
@EqualsAndHashCode.Exclude | 属性上 | 类上加@EqualsAndHashCode后,可通过该注解排除或包含的字段 | ||
@EqualsAndHashCode.Include | 属性上 | replaces | ||
@ToString | 类上 | 生成toString方法 | includeFieldNames | 为false时,toString方法不显示属性名 |
exclude | 排除属性 | |||
of | 指定属性 | |||
callSuper | 为true时同时调用父类toString方法 | |||
doNotUseGetters | 为true时有getter方法时不调用getter方法 | |||
onlyExplicitlyIncluded | 为true时只包含被@EqualsAndHashCode.Include注解标识了的字段 | |||
@ToString.Exclude | 属性上 | 类上加@EqualsAndHashCode后,可通过该注解排除或包含的字段 | ||
@ToString.Include | 属性上 | name | 替换属性名称 | |
rank | 顺序,大的在前面 | |||
@NoArgsConstructor | 类上 | 添加无参构造,当没有有参构造时,无该注解也会生成无参构成 | staticName | 添加静态构造方法,并设置方法名 |
onConstructor | 在构造方法上添加注解,例如:onParam= @__({@NonNull}) | |||
access | 设置访问级别 | |||
force | 为true时final修饰属性设置默认值 | |||
@RequiredArgsConstructor | 类上 | 有参构造,参数为带有 @NonNull注解的和以final修饰的未经初始化的字段 | staticName | 添加静态构造方法,并设置方法名 |
onConstructor | 设置访问级别 | |||
force | 为true时final修饰属性设置默认值 | |||
@AllArgsConstructor | 类上 | 全参构造 | staticName | 添加静态构造方法,并设置方法名 |
onConstructor | 设置访问级别 | |||
force | 为true时final修饰属性设置默认值 | |||
@Builder | 类上 | 生成Builder构建器,只是为类制造了一个创建者,所以我们还需要给类编写getter、setter方法等,可以和@Data 或 @Getter和@@Setter联用 | builderMethodName | 构建器方法名 |
buildMethodName | 构建方法名 | |||
builderClassName | 构建器类名 | |||
toBuilder | 为true生成toBuilder方法,用于实体对象转构造器 | |||
access | 设置访问级别 | |||
@Singular | 属性上 | 同@Builder一起使用,针对集合属性的特殊处理,可以添加单个集合元素 | value | 添加单个集合元素的方法名 |
@CustomLog | ||||
@NonNull | 属性上/参数上 | 属性上: 参数上:添加在构造方法或setter方法参数上,为该方法进行判空处理 | ||
@Cleanup | 局部变量上 | 添加在流对象局部变量上,可自动关闭流 | read | 指定关流方法 |
@Generated | 类,属性,方法上 | 标记这个类、字段、方法是自动生成的 | ||
@SneakyThrows | 方法上 | 方法体进行try{}catch{} | value | 指定catch的异常 |
@Synchronized | 方法上 | 方法体中添加同步代码块 | value | 指定同步的全局变量名 |
@val | 替换变量数据类型 | 局部变量声明的类型,而不必编写实际类型。注解将从初始化程序表达式中推断类型。 | ||
@var | ||||
@Value | 类上 | 等同@Data,就是不生成Setter方法 | staticConstructor | 指定静态构造方法的方法名,默认不生成静态构造方法 |
@With | 类上,属性上 | 添加with方法,必须要全参构造方法 | ||
@Accessors | 类上,属性上 | 用于配置getter和setter方法的生成结果 | fluent | 设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。 |
chain | 设置为true,则setter方法返回当前对象。 | |||
prefix | 用于生成getter和setter方法的字段名会忽视指定前缀(遵守驼峰命名) | |||
@Delegate | 方法上,属性上 | 会把这个属性对象的公有非静态方法合到当前类 有相同非静态方法的属性不可同时使用该注解在方法上 注在方法上则生成返回对象的非静态方法,无返回值方法不可使用 | types | 指定合并的方法,值为含有要合并方法的接口 |
excludes | 排除合并的方法,值为含有要合并方法的接口 | |||
@ExtensionMethod | 类上 | 向现有类型“添加”方法,而无需创建新的派生类型 爆红但可编译 | value | 扩展方法的类 |
suppressBaseMethods | 支持基础方法,默认true | |||
@FieldDefaults | 类上 | 设置属性缺省的修饰符。 | level | 级别 |
makeFinal | 是否Final修饰 | |||
@FieldNameConstants | 类上 | 生成属性名常量 | level | |
asEnum | 为true时生成枚举,默认为常量类 | |||
innerTypeName | 内部常量类名 | |||
onlyExplicitlyIncluded | 为true时只包含被@EqualsAndHashCode.Include注解标识了的字段 | |||
@FieldNameConstants.Include | 属性上 | 包含的属性 | ||
@FieldNameConstants.Exclude | 属性上 | 排除的属性 | ||
@Helper | ||||
@NonFinal | 属性、方法、参数、本地变量、注解、接口、类、枚举 | 用来取消因使用@FieldDefaults和@Value而加上的final修饰符 | ||
@PackagePrivate | ||||
@SuperBuilder | 类上 | 支持继承父类的子类生成Builder构建器 | ||
@Tolerate | 方法上,构成其实 | 实现冲突兼容 | ||
@UtilityClass | 类上 | 工具类,设置所有方法为静态 | ||
@CommonsLog | 类上 | 用于生成日志对象 | ||
@Flogger | ||||
@Log | ||||
@JBossLog | ||||
@Log4j | ||||
@Log4j2 | ||||
@Slf4j | ||||
@XSlf4j |