# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。