您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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) {
// 处理逻辑
}
@Target({FIELD})
@Retention(RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {
String message() default "手机号格式错误";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
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,可以显著提升代码健壮性,减少冗余校验逻辑。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。