九阴真经


SpringBoot注解校验参数及统一异常处理

<p>-分组注解</p> <pre><code>package com.example.demo.anno; /** * 更新分组 */ public @interface UpdateGroup { } </code></pre> <ul> <li>dto</li> </ul> <pre><code>package com.example.demo.entity; import com.example.demo.anno.MyNotBlank; import com.example.demo.anno.UpdateGroup; import lombok.Data; import org.hibernate.validator.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; /** * 入参 * * @author jxd * @version 1.0 * * @date 2020/12/22 10:55 */ @Data public class One implements Serializable { @NotNull(message = "id不能为空", groups = UpdateGroup.class) private String id; @NotBlank(message = "名称不能为空") private String name; @NotBlank(message = "手机不能为空") private String mobile; @MyNotBlank(message = "必须是2", vals = {"2"}) @NotBlank(message = "地址不能为空") private String address; } </code></pre> <ul> <li>Controller</li> </ul> <pre><code>package com.example.demo.ctl; import com.example.demo.entity.One; import com.example.demo.service.TestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; /** * @author jxd * @version 1.0 * * @date 2020/12/22 10:54 */ @RestController public class ParamVaildateController { @PostMapping("/one") public Object one(@Validated @RequestBody One one) { return one; } @Autowired private TestService testService; /** * 测试分组 更新 校验Id不能为空 */ @PostMapping("/two") public Object two(@Validated({UpdateGroup.class}) @RequestBody One one) throws Exception { //testService.canshu(one); return one; } } </code></pre> <ul> <li>统一异常处理</li> </ul> <pre><code>package com.example.demo.config; import com.example.demo.common.HttpResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.validation.BindingResult; 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 java.util.List; /** * 异常处理 * * @author jxd * @version 1.0 * * @date 2020/12/22 11:25 */ @RestControllerAdvice public class ExceptionConfig { /** * 日志 */ Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 抛出异常 */ @ExceptionHandler(Exception.class) public Object exception(Exception exception) { logger.error("", exception); return HttpResponse.error("系统异常"); } /** * JSON参数校验绑定异常处理 * * @param ex * @return */ @ExceptionHandler(value = MethodArgumentNotValidException.class) public Object methodArgumentNotValidException(MethodArgumentNotValidException ex) { BindingResult bindingResult = ex.getBindingResult(); // 获取所有的错误信息 List&lt;ObjectError&gt; allErrors = bindingResult.getAllErrors(); String[] errorMsg = {"参数异常"}; allErrors.forEach(e -&gt; { errorMsg[0] = e.getDefaultMessage(); logger.error(errorMsg[0]); }); //返回统一错误响应格式信息 return HttpResponse.error(errorMsg[0]); } } </code></pre>

页面列表

ITEM_HTML