0
点赞
收藏
分享

微信扫一扫

SpringBoot校验异常统一处理

yongxinz 2022-03-31 阅读 36
java

Controller:参数添加@Valid注解,保证实体属性校验生效

@RestController
@RequestMapping("/product")
public class ProductController {

    @RequestMapping("/save")
    public Map<String, String> save(@Valid @RequestBody Product product){
        //业务逻辑
        return Maps.newHashMap();
    }
}

entity:属性添加校验注解(@NotNull、@NotEmpty、@NotBlank等)

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Product {

    @NotBlank(message = "商品名称必须填写")
    @ApiModelProperty("商品名称")
    private String name;
    @Min(value = 1,message = "商品数量不能小于1")
    @ApiModelProperty("商品数量")
    private Long num;
}

handler :统一异常处理拦截器
@ExceptionHandler value属性填写具体拦截处理的异常及其子类

@Slf4j
@RestControllerAdvice
public class GlobalExceptionControllerAdvice {

    /**
     * 全局数据教研异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public Map<String, String> handleValidException(MethodArgumentNotValidException e){
        BindingResult bindingResult = e.getBindingResult();
        Map<String, String> errorMap = Maps.newHashMap();
        bindingResult.getFieldErrors().forEach(fieldError -> errorMap.put(fieldError.getField(),fieldError.getDefaultMessage()));
        return errorMap;
    }

}
举报

相关推荐

0 条评论