У меня есть класс модели
public class Account {
@Email
private String email;
@NotNull
private String rule;
}
и пружинный валидатор
public class AccountValidator implements Validator {
@Override
public boolean supports(Class aClass) {
return Account.class.equals(aClass);
}
@Override
public void validate(Object obj, Errors errors) {
Account account = (Account) obj;
ValidationUtils.rejectIfEmpty(errors, "email", "email.required");
ValidationUtils.rejectIfEmpty(errors, "rule", "rule.required");
complexValidateRule(account.getRule(), errors);
}
private void complexValidateRule(String rule, Errors errors) {
// ...
}
}
Я бегу в моей службе
AccountValidator validator = new AccountValidator();
Errors errors = new BeanPropertyBindingResult(account, "account");
validator.validate(account, errors);
Могу ли я добавить в свой процесс проверки ограничения @Email, @NotNull (JSR-303) и не описывать эти правила в AccountValidator?
Я знаю, как работает @Valid в контроллерах Spring, но как насчет сервисного уровня? Является ли это возможным? Как сделать такую проверку правильно? Могу ли я использовать Hibernate Validator?