Spring Validator: не удалось выполнить автоподключение. Компоненты типа "Валидатор" не найдены

Я не знаю, нужно ли мне еще немного кода/деталей об этом, но я готов предоставить дополнительную информацию, если это необходимо :)

Я получаю: Could not autowire. No beans of 'Validator' type found. Здесь есть похожие вопросы, но не о Validator. Я попытался автоматически подключить его через конструктор, но он все тот же. Я использую версию Intellij Ultime. Последняя версия spring-boot-starter-xxx-xxx на данный момент 1.4.1.RELEASE.

@Configuration
public class RestConfig extends RepositoryRestConfigurerAdapter {

    @Autowired
    private Validator validator;

    @Override
    public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
        validatingListener.addValidator("beforeCreate", validator);
        validatingListener.addValidator("beforeSave", validator);
    }
}

Редактировать:

Я изменил свой код на это, и это сработало. Спасибо за ответы..

@Bean
public Validator validator() {
    return new LocalValidatorFactoryBean();
}


@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
    validatingListener.addValidator("beforeCreate", validator());
    validatingListener.addValidator("beforeSave", validator());
}

Кстати, мне просто интересно, может ли человек, который проголосовал против этого вопроса, объяснить, почему он / она это сделал?


person oxyt    schedule 24.09.2016    source источник
comment
Пожалуйста, дайте также ваш файл конфигурации   -  person Jekin Kalariya    schedule 24.09.2016
comment
Привет @JekinKalariya. Извините за вопрос, но что вы подразумеваете под конфигурацией? Я не использую конфигурации xml, а только аннотации java.   -  person oxyt    schedule 24.09.2016
comment
хорошо, тогда дайте свой класс валидатора и где ваш компонент сканирует также ваш beans.xml   -  person Jekin Kalariya    schedule 24.09.2016
comment
@JekinKalariya Я использую аннотацию @SpringBootApplication в классе приложения. И мой класс валидатора — это все, что вы видите в моем вопросе. Я не думаю, что эта проблема связана с кодом. Это похоже на ошибку. Я думаю, что эта проблема не возникает в выпуске сообщества Intellij.   -  person oxyt    schedule 24.09.2016
comment
@Bean public Validator validator() { return new LocalValidatorFactoryBean(); } это то, что мне было нужно :) спасибо!   -  person Iwo Kucharski    schedule 11.05.2017


Ответы (3)


Библиотека Spring просто содержит интерфейс для Validator. Вам необходимо добавить в проект зависимость, которая фактически реализует структуру проверки JSR-303, например Hibernate Validator.

person rorschach    schedule 24.09.2016
comment
compile "org.hibernate:hibernate-validator" - этого достаточно в случае градиента? - person dmitryvim; 14.03.2017

Вместо того, чтобы изменять код, как указано выше, вы можете добавить аннотацию @Qualifier и вставить в поле, как показано ниже:

@Autowired
@Qualifier("defaultValidator")
private Validator validator;
person Community    schedule 26.10.2018

Как сказал @rorschach, библиотека Spring имеет интерфейс. Вам нужна реализация для использования валидатора. Теперь это может быть сторонняя реализация или пользовательская реализация. Вот ССЫЛКА, которая показывает пример как валидатора Hibernate, так и Пользовательский валидатор.

person Shaggy    schedule 24.09.2016