弹簧启动验证参数校验实例分析

  

本文实例讲述了弹簧启动验证参数校验。分享给大家供大家参考,具体如下:

  

对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证。弹簧引导自身对数据在服务端的校验有一个比较好的支持,它能将我们提交到服务端的数据按照我们事先的约定进行数据有效性验证。

  

        & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-validation   & lt;/dependency>      之前      

  
      <李>配置要验证的请求实体李   
        公开课用户{   @Null   私人长id;   @NotBlank   私人字符串名称;      私人字符串邮件;//省略getter和setter   }      之前      
      <李>控制器方法配置李   
        @PostMapping ("/addUser”)   公共字符串addUser (@Valid @RequestBody用户用户){   …   }      之前      
      <李>校验失败统一处理李   
  

校验失败时将抛出MethodArgumentNotValidException异常

     /* *   *全局异常处理   *   * @author liusq   *   */@RestControllerAdvice   公开课GlobalExceptionHandler {   私有静态最终日志记录器=LoggerFactory.getLogger (GlobalExceptionHandler.class);   @SuppressWarnings (“rawtypes”)   @ExceptionHandler (value=https://www.yisu.com/zixun/Exception.class)   公共ResponseEntity处理(异常e) {   如果(e instanceof MethodArgumentNotValidException) {   BindingResult BindingResult=((MethodArgumentNotValidException) e) .getBindingResult ();   如果(bindingResult.hasErrors () & & bindingResult.hasFieldErrors ()) {   FieldError FieldError=bindingResult.getFieldError ();   BodyValidStatus BodyValidStatus=new BodyValidStatus.Builder () .code (“0009”)   .message (fieldError.getDefaultMessage ())   .field (fieldError.getField ()) .build ();   LOGGER.warn (bodyValidStatus.getMessage () + e);   返回新ResponseEntity<祝辞(bodyValidStatus HttpStatus.OK);   其他}{   bodyStatus=DataUtil.bodyStatus (“0009”);   }   其他}{   bodyStatus=DataUtil.bodyStatus (Constants.ERROR_CODE);   }   LOGGER.error (bodyStatus.getMessage () + e);   返回新ResponseEntity<祝辞(bodyStatus HttpStatus.OK);   }   }   公开课BodyValidStatus {//错误代码   私人字符串代码;//错误代码解释   私人字符串消息;//错误字段   私人字符串字段;   公共BodyValidStatus () {   }   公共BodyValidStatus(消息代码字符串,字符串,字符串字段){   这一点。代码=代码;   这一点。消息=消息;   这一点。字段=字段;   }   私人BodyValidStatus (Builder构建器){   setCode (builder.code);   setMessage (builder.message);   setField (builder.field);   }   公共字符串getCode () {   返回码;   }   公共空间setCode(字符串代码){   这一点。代码=代码;   }   公共字符串getMessage () {   返回消息;   }   公共空间setMessage(字符串消息){   这一点。消息=消息;   }   公共字符串getField () {   返回字段;   }   公共空间setField(字符串字段){   这一点。字段=字段;   }   @Override   公共字符串toString () {   返回ToStringBuilder.reflectionToString(这个);   }   公共静态最终类构建器{   私人字符串代码;   私人字符串消息;   私人字符串字段;   公共建筑(){   }   公共代码生成器(字符串val) {   代码=val;   返回;   }   公共建筑信息(字符串val) {   消息=val;   返回;   }   公共建筑领域(字符串val) {   ?val;   返回;   }   公共BodyValidStatus建立(){   返回新BodyValidStatus(这个);   }   }   }      之前      

  

              

验证注解

        

验证的数据类型

        

说明               

空检查               

@Null         

任意类型

        

验证注解的元素值是null

              

@NotNull         

弹簧启动验证参数校验实例分析