一、引入依赖
springboot版本:2.3.0>=
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
二、注解使用
1、controller方法加注解:@Validated
ResponseResult<Boolean> update(@RequestBody @Validated AppParam appParam);
2、请求参数加注解,如:@NotBlank(message = "code不能为空")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AppParam implements Serializable {
@NotBlank(message = "code不能为空")
private String code;
@NotBlank(message = "name不能为空")
private String name;
}
三、异常统一处理
主要是对MethodArgumentNotValidException这异常的返回接口统一定义的返回格式
@RestControllerAdvice
@Component
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public String exception(MethodArgumentNotValidException exception) {
ResponseResult<String> responseResult = new ResponseResult<>();
responseResult.setCode(ErrorCode.PARAM_ERROR.getCode());
responseResult.setMsg(ErrorCode.PARAM_ERROR.getMsg());
BindingResult result = exception.getBindingResult();
final List<FieldError> fieldErrors = result.getFieldErrors();
List<String> errorMsg = new ArrayList<>();
for (FieldError error : fieldErrors) {
errorMsg.add(error.getDefaultMessage());
}
responseResult.setData(errorMsg.get(0));
return JSONObject.toJSONString(responseResult);
}
}