Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring LocalValidatorFactoryBean未自动连接_Spring_Spring Mvc - Fatal编程技术网

Spring LocalValidatorFactoryBean未自动连接

Spring LocalValidatorFactoryBean未自动连接,spring,spring-mvc,Spring,Spring Mvc,我正在使用SpringWebMVC5,并且已经创建了validatorMyValidator实现org.springframework.validation.validator和LocalValidatorFactoryBean工厂字段。 我想在我的应用程序中同时使用Bean验证和Spring验证 但在工厂字段上使用@Autowired时出错:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“org.spring

我正在使用SpringWebMVC5,并且已经创建了validator
MyValidator实现org.springframework.validation.validator
LocalValidatorFactoryBean
工厂字段。 我想在我的应用程序中同时使用Bean验证和Spring验证 但在工厂字段上使用
@Autowired
时出错:
org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“org.springframework.validation.beanvalidation.localvalidatoryfactorybean”类型的合格bean可用

Hibernate验证程序位于类路径中
验证程序和配置:

@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();
   }
}

@服务
公共类MyValidator实现
org.springframework.validation.Validator{
@自动连线
私家菜豆厂;
@凌驾
公共布尔支持(类clazz){
…一些代码。。。
}
@凌驾
公共无效验证(对象目标、错误){
javax.validation.Validator Validator=factory.getValidator();
…一些代码。。。
}
} 
@配置
@EnableWebMvc
@组件扫描({“控制器”、“服务”})
公共类WebConfig实现WebMVCConfiguer{
…一些代码。。。
@豆子
公共LocalValidatoryFactoryBean getValidator(){
返回新的LocalValidatoryFactoryBean();
}
}

我想你可能用错了
@ComponentScan

根据
组件扫描的弹簧文档值
字段

如果不需要其他属性,则允许更简洁的注释声明-例如,@ComponentScan(“org.my.pkg”)而不是@ComponentScan(basePackages=“org.my.pkg”)

我怀疑您的软件包是否命名为“控制器”或“服务”
因此,只需删除它或用您要扫描的根包的正确名称替换它。

如果bean是私有的,则无法从类外访问它!我担心您必须发布更多的代码(尝试创建允许复制问题的最小代码集).@Sanjari,但据我所知,Spring使用反射来访问privatefields@snieguu,我发布了我的代码的最后一个版本,所以现在我得到了错误:没有类型为'org.springframework.validation.beanvalidation.LocalValidatoryFactoryBean'的合格bean可用!问题是不仅web配置包含@ComponentScan({“service”,“controller”}),根配置也包括@ComponentScan(“服务”)