注解说明
@Data
标注在实体类上,不用写set和get方法,但其他地方可以直接调用set和get方法
@Data
@ApiModel("ParkIdsAO")
public class ParkIdsAO {
@ApiModelProperty(value = "车场id集合", name = "parkIds", required = true)
@NotNull
@Size(min = 1)
private List<String> parkIds;
}
@NoArgsConstructor
注解在类上,为类提供一个无参的构造方法。
@AllArgsConstructor
(1)注解在类上,为类提供一个全参的构造方法。
(2)默认生成的方法是 public 的,如果要修改方法修饰符可以设置 AccessLevel 的值。
如:@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Builder
@Builder声明实体,表示可以进行Builder方式初始化
实例:
@Builder(toBuilder = true)
@Getter
public class UserInfo {
private String name;
private String email;
@MinMoney(message = "金额不能小于0.")
@MaxMoney(value = 10, message = "金额不能大于10.")
private Money price;
}
//赋值新对象
UserInfo userInfo = UserInfo.builder()
.name("zzl")
.email("[email protected]")
.build();
//修改对象
userInfo = userInfo.toBuilder()
.name("OK")
.email("[email protected]")
.build();
@RequiredArgsConstructor
生成带有必须参数的构造函数
原来的spring的传统方式
使用lombok的这个注解可以不用写注入需要的注解
说明:
声明的变量必须为final
@RequiredArgsConstructor(onConstructor=@_(@Autowired)):
为private final定义的变量进行自动注入,可省略写大量@Autowired
val
Lombok的val特性允许你在Java局部变量声明时省略具体的类型声明,从而使代码更加简洁
Lombok会自动推断出变量的类型,并且这个变量会被隐式地声明为final,即不可变。这意味着一旦赋值,你就不能再次改变这个变量的值。
举例
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
//修改为使用val
val names = new ArrayList<String>();
names.add("Alice"); // 这里实际上会有错误,因为val声明的变量应为不可变,但Java集合默认不是final,此处仅为示例说明
注意事项
非静态和非实例字段:val不适用于类的字段(成员变量),只能用于局部变量。
类型推断限制:尽管val简化了类型声明,但在复杂的表达式中,过度依赖类型推断可能会降低代码的可读性。
Lombok的工作原理是在编译时期通过注解处理器自动生成必要的代码片段,包括类型信息、final修饰符等。
不会造成运行时的效率下降