使用 Spring Validation 优雅地校验参数

使用Spring Validation优雅地校验参数

引言

不知道大家平时的业务开发过程中 controller 层的参数校验都是怎么写的?是否也存在下面这样的直接判断?

public String add(UserVO userVO) {
      if(userVO.getAge() == null){
          return "年龄不能为空";    }    if(userVO.getAge() > 120){
          return "年龄不能超过120";    }    if(userVO.getName().isEmpty()){
          return "用户名不能为空";    }    // 省略一堆参数校验...    return "OK";}

复制代码

业务代码还没开始写呢,光参数校验就写了一堆判断。这样写虽然没什么错,但是给人的感觉就是:不优雅,不专业。

其实Spring框架已经给我们封装了一套校验组件:validation。其特点是简单易用,自由度高。接下来课代表使用springboot-2.3.1.RELEASE搭建一个简单的 Web 工程,给大家一步一步讲解在开发过程中如何优雅地做参数校验。

1. 环境搭建

springboot-2.3开始,校验包被独立成了一个starter组件,所以需要引入如下依赖:

<!--校验组件--><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-validation</artifactId></dependency><!--web组件--><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>

复制代码

springboot-2.3之前的版本只需要引入 web 依赖就可以了。

2.小试牛刀

参数校验非常简单,首先在待校验字段上增加校验规则注解

public String add1(@Validated UserVO userVO, BindingResult result) {
      List<FieldError> fieldErrors = result.getFieldErrors();    if(!fieldErrors.isEmpty()){
          return fieldErrors.get(0).getDefaultMessage();    }    return "OK";}

复制代码

然后在controller方法中添加@Validated和用于接收错误信息的BindingResult就可以了,于是有了第一版:

public String add1(@Validated UserVO userVO, BindingResult result) {
      List<FieldError> fieldErrors = result.getFieldErrors();    if(!fieldErrors.isEmpty()){
          return fieldErrors.get(0).g
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值