@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;
}
}