Spring validation参数校验基本使用

本文介绍了Spring Validation的使用,包括全局异常处理、快速失败配置、分组校验和服务层校验。通过@Valid和@Validated注解,实现方法参数的约束验证,并通过自定义异常处理器提供统一的错误响应格式。
摘要由CSDN通过智能技术生成

2、在方法的入参对应的自定义对象中配置校验注解:

package com.jingai.validation.vo;

import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

@Data
public class MemberVo {

    private int id;
    @NotBlank(message = "会员名称不能为空")
    private String name;

    @NotBlank(message = "性别不能为空")
//    @InEnum(enumType = GenderEnum.class, message = "性别不在枚举范围中")
    private String gender;

    @Min(value = 18, message = "年龄必须大于18岁")
    @Max(value = 200, message = "年龄必须小于200岁")
    private Integer age;
    @NotBlank(message = "手机号码不能为空")
    @Pattern(regexp = "^(13[0-9]|14[579]|15[012356789]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$", message = "手机号码格式错误")
    private String phone;

}

注:被注释的@InEnum为自定义的注解,后文讲解。

3、在Controller方法中,使用@Valid或@Validated注解开启数据校验功能。

3.1 对象参数使用,代码如下:

package com.jingai.validation.controller;

import com.jingai.validation.util.ResponseUtil;
import com.jingai.validation.vo.MemberVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
public class MemberController {

    /**
     * 前面加@RequestBody注解时,校验失败时,抛MethodArgumentNotValidException异常
     */
    @RequestMapping("addmember1")
    public Map<String, Object> addMember1(@RequestBody @Validated MemberVo member) {
        // 省略其他代码
        return ResponseUtil.success();
    }

    /**
     * 没有添加@RequestBody,校验失败抛BindException异常
     */
    @RequestMapping("addmember2")
    public Map<String, Object> addMember2(@Validated MemberVo member) {
        // 省略其他代码
        return ResponseUtil.success();
    }

}

项目启动后,分别访问上面的两个接口,返回信息如下:

访问addmember1接口时,校验失败抛MethodArgumentNotValidException异常。

访问addmember2,校验失败时,抛BindException异常。

3.2 基本类型使用,代码如下:

package com.jingai.validation.controller;

import com.jingai.validation.service.MemberService;
import com.jingai.validation.util.ResponseUtil;
import com.jingai.validation.vo.MemberVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import java.util.Map;

@RestController
@Validated
public class 
  • 21
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值