класс конфигурации
@ComponentScan(basePackages = {"validator"})
class AppConfiguration { ... }
класс аннотаций
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UniqueLoginValidator.class)
public @interface UniqueLogin {
String message() default "{com.dolszewski.blog.UniqueLogin.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
класс валидатора
@Component
class UniqueLoginValidator implements ConstraintValidator<UniqueLogin, String> {
private UserRepository userRepository;
public UniqueLoginValidator(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void initialize(UniqueLogin constraint) {
}
public boolean isValid(String login, ConstraintValidatorContext context) {
return login != null && !userRepository.findByLogin(login).isPresent();
}
}
У меня есть класс со свойством @UniqueLogin String login
, я также использую другиеаннотации типа @Size
и @Max
, последние 2 работают, но моя пользовательская аннотация не работает.
Не могли бы вы помочь понять, почему Spring не вызывает пользовательский валидатор?