springboot中如何进行Validator校验

发布时间:2021-09-29 17:38:36 作者:柒染
来源:亿速云 阅读:144
# SpringBoot中如何进行Validator校验

在SpringBoot应用中,数据校验是保证业务逻辑正确性的重要环节。通过Validator组件可以高效实现参数校验,本文将介绍两种常用校验方式。

## 一、使用Hibernate Validator

SpringBoot默认集成Hibernate Validator,只需在实体类上添加注解:

```java
public class UserDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;

    @Min(value = 18, message = "年龄必须大于18岁")
    private Integer age;
    
    @Email(message = "邮箱格式不正确")
    private String email;
}

在Controller中使用@Valid触发校验:

@PostMapping("/users")
public ResponseEntity createUser(@RequestBody @Valid UserDTO user) {
    // 处理逻辑
}

二、自定义校验器

  1. 创建自定义注解:
@Target({FIELD})
@Retention(RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {
    String message() default "手机号格式错误";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
  1. 实现校验逻辑:
public class PhoneValidator implements ConstraintValidator<Phone, String> {
    @Override
    public boolean isValid(String phone, ConstraintValidatorContext context) {
        return phone.matches("^1[3-9]\\d{9}$");
    }
}

三、异常处理

校验失败会抛出MethodArgumentNotValidException,可通过全局异常处理器捕获:

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity handleValidationException(MethodArgumentNotValidException ex) {
        // 提取错误信息返回
    }
}

四、分组校验

通过groups属性实现不同场景的校验规则:

public interface UpdateGroup {}
public interface CreateGroup {}

@NotNull(groups = UpdateGroup.class)
private Long id;

使用时指定分组:

public ResponseEntity update(@Validated(UpdateGroup.class) UserDTO user)

通过合理使用Validator,可以显著提升代码健壮性,减少冗余校验逻辑。 “`

推荐阅读:
  1. SpringBoot中如何使用Validation进行参数校验
  2. springboot validator枚举值校验功能实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

validator spring boot

上一篇:html中如何实现固定在网页右侧的浮动层

下一篇:如何解决IE9下Ajax无法刷新数据的缓存问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》