springBoot基于Bean和Method参数校验,捕捉异常
Posted zhuo-zui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot基于Bean和Method参数校验,捕捉异常相关的知识,希望对你有一定的参考价值。
package com.wlb.jp.config; import com.wlb.jp.utils.ReturnType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.CollectionUtils; import org.springframework.validation.BindException; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import java.util.List; import java.util.Set; /** * 全局异常处理器 */ @ControllerAdvice public class GlobalExceptionHandler { private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); /** * 用来处理method validation异常 * @param ex * @return */ @ExceptionHandler(ConstraintViolationException.class) @ResponseBody public ReturnType resolveConstraintViolationException(ConstraintViolationException ex){ String code = ""; String msg = ""; Object value = ""; ReturnType returnType = new ReturnType(code, msg, value); Set<ConstraintViolation<?>> constraintViolations = ex.getConstraintViolations(); if(!CollectionUtils.isEmpty(constraintViolations)) { StringBuilder msgBuilder = new StringBuilder(); for(ConstraintViolation constraintViolation :constraintViolations){ msgBuilder.append(constraintViolation.getMessage()).append(","); } String errorMessage = msgBuilder.toString(); if (errorMessage.length() > 1) { errorMessage = errorMessage.substring(0, errorMessage.length() - 1); } returnType.setMsg(errorMessage); return returnType; } returnType.setMsg(ex.getMessage()); return returnType; } /** * 用来处理bean validation异常 * @param ex * @return */ // @ExceptionHandler(MethodArgumentNotValidException.class) @ExceptionHandler(BindException.class) @ResponseBody public ReturnType resolveMethodArgumentNotValidException(BindException ex){ String code = ""; String msg = ""; Object value = ""; ReturnType returnType = new ReturnType(code, msg, value); List<ObjectError> objectErrors = ex.getBindingResult().getAllErrors(); if(!CollectionUtils.isEmpty(objectErrors)) { StringBuilder msgBuilder = new StringBuilder(); for (ObjectError objectError : objectErrors) { msgBuilder.append(objectError.getDefaultMessage()).append(","); } String errorMessage = msgBuilder.toString(); if (errorMessage.length() > 1) { errorMessage = errorMessage.substring(0, errorMessage.length() - 1); } returnType.setMsg(errorMessage); return returnType; } returnType.setMsg(ex.getMessage()); return returnType; } }
以上是关于springBoot基于Bean和Method参数校验,捕捉异常的主要内容,如果未能解决你的问题,请参考以下文章
怎么使用SpringBoot实现懒加载和init-method