Hibernate Validator不僅可以用于Controller層的參數驗證,還可以在Service層、Repository層或任何其他層中使用。
手動驗證
在任何地方都可以通過Validator接口手動觸發驗證:
public class ManualValidationExample {public void validateObject(Object obj) {// 獲取驗證器ValidatorFactory factory = Validation.buildDefaultValidatorFactory();Validator validator = factory.getValidator();// 執行驗證Set<ConstraintViolation<Object>> violations = validator.validate(obj);// 處理驗證結果if (!violations.isEmpty()) {for (ConstraintViolation<Object> violation : violations) {System.out.println(violation.getPropertyPath() + ": " + violation.getMessage());}throw new IllegalArgumentException("Validation failed");}}
}
在Service層使用
在方法調用時進行驗證,首先在類上添加@Validated注解以啟用方法驗證
@Service
@Validated
public class UserService {public void createUser(@NotNull @Valid User user) {// 業務邏輯}public void updateEmail(@Min(1) Long userId, @NotBlank @Email String email) {// 業務邏輯}
}
在Entity/DTO中使用
Hibernate Validator可以直接用于任何Java類:
public class Product {@NotNullprivate Long id;@NotBlank@Size(max = 100)private String name;@Positiveprivate BigDecimal price;// getters and setters
}