当前位置: 代码迷 >> 综合 >> 代码简化开发(lombok)
  详细解决方案

代码简化开发(lombok)

热度:37   发布时间:2024-02-24 15:29:33.0

注:使用先需先安装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