LocalValidatorFactoryBean не подключен автоматически - PullRequest
0 голосов
/ 08 ноября 2019

Я использую spring-webmvc 5 и создал валидатор MyValidator implements org.springframework.validation.Validator с фабричным полем LocalValidatorFactoryBean. Я хочу использовать в своем приложении как Bean Validation, так и Spring Validation, но я получаю сообщение об ошибке при использовании @Autowired на заводском поле: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean' available

Hibernate Validator находится в classpath
Validator и config:

@Service
public class MyValidator implements 
org.springframework.validation.Validator {
   @Autowired
   private LocalValidatorFactoryBean factory;
   @Override
   public boolean supports(Class<?> clazz) {
       ...some code...
   }
   @Override
   public void validate(Object target, Errors errors){
       javax.validation.Validator validator = factory.getValidator();
       ...some code...
   }
} 
@Configuration
@EnableWebMvc
@ComponentScan({"controller","service"})
public class WebConfig implements WebMvcConfigurer{
   ...some code...
   @Bean
   public LocalValidatorFactoryBean getValidator() {
       return new LocalValidatorFactoryBean();
   }
}

1 Ответ

0 голосов
/ 10 ноября 2019

Я думаю, что вы, вероятно, используете неправильно @ComponentScan

В соответствии со значением весенней документации field из ComponentScan

Позволяет использовать более краткие объявления аннотаций, если нет других атрибутовнеобходимы - например, @ComponentScan ("org.my.pkg") вместо @ComponentScan (basePackages = "org.my.pkg").

Я сомневаюсь, что ваши пакеты называются "контроллер "или служба" Так что просто удалите его или замените его на правильное имя корневого пакета, который вы хотите сканировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...