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
}