第一步 添加maven依赖
1、添加 Hibernate-Validator 依赖,如果使用了springboot,则不需要引用任何依赖,因为spring-boot-starter-web包中已经包含了Hibernate-Validator 依赖
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.18.Final</version> </dependency>
在Vo属性上加入相应的注解 使用lombok 的@Data注解自动生成gettter/setter方法
注意:String 使用@NotBlank Integer类型使用@NotNull 其他类型还暂时没用到
第二步建立对应的Vo
@Data @NoArgsConstructor @AllArgsConstructorpublic class User { @NotBlank(message = "姓名不能为空") private String name;
@NotNUll(message="年龄不能为空")
private Integer age; }
第三部 使用
1、如果是Post方法,需在@RequestBody 的前面或者后面加上@Valid注解
/** * 测试校验框架返回结果格式 */ @PostMapping(value = "/validator") public String testValidator(@RequestBody @Valid User user){ return "校验成功..."; }
2、get方法,需要在类上加入注解@Validated,然后再加入其它对应注解
@RestController @RequestMapping("/user") @Validated public class UserController { /** * 测试校验框架返回结果格式 */ @GetMapping(value = "/validator2") public String testValidator2(@NotBlank(message = "姓名不能为空") String name){ return "校验成功..."; } }
第四步 定制校验的返回信息
利于spring中的@ControllerAdvice定制优雅的返回信息,spring自带的全局异常处理机制,
/** * @Description: 全局的异常处理 * @Author: chenmingjian * @Date: 18-10-31 19:00 */ @ControllerAdvice @Slf4j public class GlobalExceptionHandler {
/**
* 参数校验统一异常处理
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public ResultEntity handleBindException(MethodArgumentNotValidException ex) {
FieldError fieldError = ex.getBindingResult().getFieldError();
log.warn("参数校验异常:{}({})", fieldError.getDefaultMessage(),fieldError.getField());
return ResultEntity.faill(211,fieldError.getDefaultMessage(),null);
}
}
ResponseEntity类如下:
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @CreateDate 2021/12/1 17:30 * @Author yuan **/ @Data @AllArgsConstructor @NoArgsConstructor public class ResultEntity<T> { private Integer code; private String message; private T data; public static <T> ResultEntity<T> faill(Integer code,String msg,T t){ return new ResultEntity<T>(code,msg,t); } }