Lombok插件工具

Posted by zjh on August 10, 2020

@Bulider注解的使用注意事项

在Controller参数列表内有自动封装的实体类对象,并且该实体类对象使用@Buider实例化对象的时,需要加上空构造和全构造的注解/方法

public R<TokenDTO> login(@Valid @RequestBody AutoDTO autoDTO) {

因为springboot/mvc的@Controller方法的参数列表如果有该实体类,他会反序列化该类,找该类的空构造函数,当@Buider修饰类的时候,该类是没有空构造函数的

解决方法一

手动添加空构造和全构造注解 @NoArgsConstructor @AllArgsConstructor

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AutoDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;
    @NotBlank(message = "密码不能为空")
    private String password;

}


解决方法二

将@Bulider注解加在构造函数上

@Data

public class AutoDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;
    @NotBlank(message = "密码不能为空")
    private String password;
    @Builder
    public AutoDTO() {
    }
    @Builder
    public AutoDTO(@NotBlank(message = "用户名不能为空") String username, @NotBlank(message = "密码不能为空") String password) {
        this.username = username;
        this.password = password;
    }
}