2016-11-21 6 views
0

Я создал простой проект без mvc и добавил зависимость от весенней загрузки-стартера. Когда я попытался ввести javax.validation.Validator, я получил ошибку org.springframework.beans.factory.NoSuchBeanDefinitionException.Весна-валидация и проверка валидатора

Означает ли это, что проверка весны-стартера-стартера не предоставляет никакого валидатора по умолчанию, то есть LocalValidatorFactoryBean, и мне всегда нужно создавать его самостоятельно, как в обычном проекте без весенней загрузки?

@Component 
public class ExampleService{ 

    @Autowired 
    private Validator validator; 

    public void someMethod(){ 
      //validation 
    } 

} 

Injection терпит неудачу, и это не имеет значения, если валидатор от javax.validation или org.springframework.validation пакета.

+0

Можете ли вы добавить еще код и журналы: какой боб отсутствует? – terjekid

+0

Я добавил простой пример. Spring Starter Project> Зависимость проверки и этот простой компонент. Инъекция не срабатывает. – swch

ответ

0

Нет Beans предоставляются из коробки с spring-boot-starter-validation следовательно, почему вы испытываете NoSuchBeanDefinitionException

Смотрите следующий rationale для этого стартера, прямо из уст лошадей:

Ранее только стартер, который при условии, что валидация была spring-boot-starter-web, которая включала Hibernate Validator и Реализация EL для Tomcat. Это привело к тому, что пользователи написали не-веб-приложения , чтобы выяснить зависимости для себя. Они бы иногда сталкивались с трудностями, так как необходимость Hibernate Validator для реализации EL могла бы их разбить.

Эта фиксация добавляет новый стартер, весна-бот-стартер-валидация, который обеспечивает как Hibernate Validator, так и реализацию Tomcat EL. spring-boot-starter-web обновлен, чтобы зависеть от этого стартера , а не напрямую от Hibernate Validator.