一.JSR303校验
①最开始我们可以在controller中需要校验的字段上加上注解@Valid即可进行最基础的校验。当然为了明确我们哪些字段上可以为空哪些不为空相关指定工作我们在entity上添加上注解,并且当校验出错我们可以返回对应的message信息。
②我们也可以在对应需要校验的bean后紧跟BingdingResult就可以获取到校验的结果,并且可以对不同的多场景下的校验做一个分组操作,比方说新增或者修改的情况下才可以校验当前值。
③最后做一个复用操作,我们为了统一抛出的信息,制定了一个统一的异常处理器类解决指定的异常。
* 4.统一的异常处理
* 1)编写一场处理类,可以使用springmvc当中的@ControllerAdvice
* 2)使用@Exceptionhandler标注方法可以处理的异常
④在异常处理器上放定义ControllerAdvice又因为返回的就是@responseBody所以可以整合为@RestControllerAdvice,定义不同的异常@ExceptionHandler指定特定的异常有对应的异常处理方法
@Slf4j
@RestControllerAdvice(basePackages = "com.atguigu.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R handleValidException(MethodArgumentNotValidException e){
log.error("数据校验出现问题{},异常类型:{}",e.getMessage(),e.getClass());
BindingResult bindingResult = e.getBindingResult();
Map<String,String> errormap = new HashMap<>();
//1.获取校验的错误结果
bindingResult.getFieldErrors().forEach((fieldError) ->{
errormap.put(fieldError.getField(),fieldError.getDefaultMessage());
});
return R.error(400,"提交数据不合法").put("data",errormap);
}
@ExceptionHandler(value = Throwable.class)
public R handleException(Throwable throwable){