springboot结合@Validated全局异常捕捉
创始人
2024-02-10 18:45:16
0

一、引入依赖


org.springframework.bootspring-boot-starter-validation

二、全局异常捕捉类

package com.cqec.admin.advice;import com.cqec.common.base.BaseResult;
import com.cqec.common.constant.PlatforEnums;
import com.cqec.common.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.stream.Collectors;/*** 

* 业务异常统一拦截处理*

** @author woo* @since 2019/12/29*/ @RestControllerAdvice @Slf4j public class UnityExceptionHandler {/*** 分割符*/private static final String SEP_COMMA = ",";/*** bean参数验证 带requestbody的方式.** @param ex RuntimeException* @return String*/@ExceptionHandler(MethodArgumentNotValidException.class)public BaseResult validExceptionHandler(MethodArgumentNotValidException ex) {return BaseResult.fail(HttpStatus.BAD_REQUEST.value()+"", ex.getBindingResult().getAllErrors().stream().map(ObjectError::getDefaultMessage).collect(Collectors.joining(",")));}/*** bean参数验证.** @param ex RuntimeException* @return String*/@ExceptionHandler(BindException.class)public BaseResult validExceptionHandler(BindException ex) {return BaseResult.fail(HttpStatus.BAD_REQUEST.value()+"", ex.getAllErrors().stream().map(ObjectError::getDefaultMessage).collect(Collectors.joining(SEP_COMMA)));}/*** 单个参数验证.** @param ex RuntimeException* @return String*/@ExceptionHandler(ConstraintViolationException.class)public BaseResult validExceptionHandler(ConstraintViolationException ex) {return BaseResult.fail(HttpStatus.BAD_REQUEST.value()+"", ex.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(SEP_COMMA)));}}

三、准备实体类和controller

实体类

package com.cqec.admin.mapper.entity;import javax.validation.constraints.NotBlank;
import java.util.Date;@Data
public class User{/*** id*/private Long id;/*** 名字*/@NotBlank(message = "名字不能为空")private String name;/*** 电话号码*/@NotBlank(message = "电话号码不能为空")private String phone;}

controller类

import com.cqec.admin.manager.TokenManager;
import com.cqec.admin.mapper.entity.ChildWaterMeterTable;
import com.cqec.admin.request.ChildWaterMeterInfoPageRequestVO;
import com.cqec.admin.request.WaterMeterCoverSendOrderRequest;
import com.cqec.admin.request.WaterMeterDataImageRequestVO;
import com.cqec.admin.resultVO.ChildWaterMeterInfoResultVO;
import com.cqec.admin.resultVO.WaterMeterDataImageResultVO;
import com.cqec.admin.service.WaterMeterCoverService;
import com.cqec.admin.util.TokenUtil;
import com.cqec.common.base.BasePageResultDto;
import com.cqec.common.base.BaseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List
@RestController
@RequestMapping("/user")
public class WaterMeterCoverController {
/*** 新增用户* @param childWaterMeterTable* @return*/@PostMapping("/addWaterMeterCover")public BaseResult addChildWaterMeter(@Validated @RequestBody User user){return user;}
}

如果name和phone不传 会返回 

{

    "code": "400",

    "message": "名字不能为空,电话号码不能为空",

    "data": null

}

相关内容

热门资讯

(图片·漫画)法律援助志愿服务 新华社图表,北京,2025年12月23日 记者12月23日从司法部获悉,司法部、教育部、共青团中央...
5年办案430件,房山检察院以... 近日,北京市房山区人民检察院发布《北京市房山区人民检察院检察技术支持检察办案白皮书(2021-202...
成都双臂缺失男子被弟弟冒名结婚... 李某甲与李某乙系兄弟关系,哥哥李某甲年幼时因故双手截肢。 34年前,李某乙尚未达到法定结婚年龄22周...
修订食安法:首次确立重点液态食... 12月23日,市场监管总局副局长柳军在食品安全专题新闻发布会上介绍,总局推动《中华人民共和国食品安全...
七成涉重疾险理赔诉讼请求获判决... “涉重疾险纠纷案件数量较2021年上涨38.71%”“案件平均审理时长由2021年的217天下降为2...
建工修复近12个月累计诉讼金额... 12月23日,建工修复(300958)发布公告,截止至本公告披露日前的连续十二个月内,公司及合并报表...
海南产经新观察:为“向数图强”... 中新网海口12月23日电 (黄方舟)已经启动全岛封关的海南自贸港,正致力推动公共数据资源开发利用,加...
幼儿园收费划出“制度红线”,严... 大象新闻2025-12-23 17:12:18 2026年1月1日起,幼儿园收费实行目录清单管理,建...
快手就遭到黑灰产攻击谴责违法犯... 针对快手平台上出现违规内容的异常情况,12月23日,南都N视频记者从快手科技方面获悉,公司快手应用的...
调解故事 | 高效化解装修纠纷... 近日,延吉市房地产纠纷人民调解委员会成功调解了一起合同纠纷,切实维护了当事人合法权益。 今年5月,...