springboot参数校验

我爱海鲸 2026-01-22 17:26:00 暂无标签

简介valid

其他的文章

公共模块:

http://www.haijin.xyz/article/930

之前的参数校验:

http://www.haijin.xyz/list/article/181

1、引入maven依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

2、相关配置:


/**
 * 通用异常处理参数校验相关异常
 *
 * @author system
 */
@Slf4j
@RestControllerAdvice(assignableTypes = TestController.class)  // 针对当前的接口进行校验拦截
@Order(1)
public class ValidationExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ResultData<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException e) {
        String errorMessage = Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage();
        return ResultData.builder()
                .code(ReturnCodeEnum.RC999.getCode())
                .message(errorMessage)
                .build();
    }

    @ExceptionHandler(ConstraintViolationException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ResultData<Object> handleConstraintViolation(ConstraintViolationException e) {
        String errorMessage = e.getMessage();
        return ResultData.builder()
                .code(ReturnCodeEnum.RC999.getCode())
                .message(errorMessage)
                .build();
    }

    @ExceptionHandler(MissingServletRequestParameterException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ResultData<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException e) {
        String errorMessage = "参数不能为空:" + e.getParameterName();
        return ResultData.builder()
                .code(ReturnCodeEnum.RC999.getCode())
                .message(errorMessage)
                .build();
    }
}

3、TestController:

    @GetMapping("/test/list")
    @ResponseBody
    public ResultData<Object> queryVideoList(
            @RequestParam("type") @NotNull(message = "参数不能为空:type") Integer type) {

4、常用注解

注解 作用场景 示例
@NotBlank 字符串非空(非 null + 非空白) @NotBlank(message = "姓名不能为空")
@NotNull 任意类型非 null @NotNull(message = "年龄不能为空")
@NotEmpty 集合 / 数组非空(长度 > 0) @NotEmpty(message = "爱好不能为空")
@Email 邮箱格式校验 @Email(message = "邮箱格式错误")
@Min(value) 数字最小值 @Min(value = 18, message = "年龄最小18")
@Max(value) 数字最大值 @Max(value = 60, message = "年龄最大60")
@Pattern(regexp) 正则表达式校验 @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号错误")
@Size(min, max) 字符串 / 集合长度范围 @Size(min = 6, max = 20, message = "密码长度6-20")

 

你好:我的2025