Почему не работает Autowired при валидации?
Делаю проверку на уникальность поля.
@Documented
@Target({ElementType.METHOD, ElementType.FIELD})
@Constraint(validatedBy = UniqueValidator.class)
@Retention(RUNTIME)
public @interface Unique {
String message();
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
При вызове метода валидатора isValid commandsService - null, хотя в контроллере тот же сервис инициализируется.
public class UniqueValidator implements ConstraintValidator<Unique,String> {
@Autowired
private CommandsService commandsService;
@Override
public void initialize(Unique unique) {
unique.message();
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
return !commandsService.isUnique(s);
}
}
Ответы (1 шт):
Автор решения: Anton Charov
→ Ссылка
Заработало, когда вместо Entity стал валидировать dto и аннотировал контроллер @Validated https://www.baeldung.com/spring-validate-list-controller - хорошая статья на эту тему