java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot 参数验证

SpringBoot整合Hibernate Validator实现参数验证功能

作者:陈大帅哥Ray

这篇文章主要介绍了SpringBoot整合Hibernate Validator实现参数验证功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节。但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码。这里可以引用Hibernate Validator来解决这个问题,直接在实体类进行参数校验,验证失败直接返回错误信息给前端,减少controller层的代码量。

一、xml引入Hibernate Validator

<!-- 验证器 -->
<dependency>
   <groupId>org.hibernate.validator</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.1.5.Final</version>
</dependency>

二、通过注解在实体类进行参数校验

@Data
public class UserModel {

  @NotNull(message = "用户名称不能为空!")
  private String userName;

  @NotNull(message = "age不能为null!")
  @Range(min = 1, max = 888, message = "范围为1至888")
  private Integer age;

  /**
   * 日期格式化转换
   */
  @NotNull(message = "日期不能为null!")
  private Date date;
}

这里用到的参数校验的注解有@NotNull和@Range,message是到时候我们返回给前端的信息,注解的具体意思如下:

三、controller层的方法加上@Valid注解

@PostMapping("/testPost")public Object testPost(@RequestBody @Valid UserModel userModel, BindingResult result){  
                          
		 if(result.hasErrors()){    for(ObjectError error:result.getAllErrors()){      
						                        return error.getDefaultMessage();   
					 } 
											    
				   }  
		return userModel;
}

controller层这里只需要在实体类的前面加上@Valid注解,这个注解可以实现数据的验证。这里BindingResult是存储了校验时的错误信息,验证有误时将错误信息返回给前端。这里不使用BindingResult的时候,控制台会报MethodArgumentNotValidException,这里可以通过自定义异常类来捕捉它,然后去掉BindingResult,以及难看的if判断。

四、自定义异常类捕捉MethodArgumentNotValidException

@RestControllerAdvice
public class GlobalExceptionAdvice {

  @ExceptionHandler(value = MethodArgumentNotValidException.class)
  public JsonData validException(MethodArgumentNotValidException e) {
    //验证post请求的参数合法性
    MethodArgumentNotValidException notValidException = e;
    String msg = notValidException.getBindingResult().getFieldError().getDefaultMessage();
    return JsonData.buildError(msg);
  }
}

使用PostMan的测试结果如下:

具体的代码可以在我的gitee上面 查看 ,springboot_validator

到此这篇关于SpringBoot整合Hibernate Validator实现参数验证功能的文章就介绍到这了,更多相关SpringBoot 参数验证 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文