2016-11-21 66 views
0

我创建了简单的非mvc项目并添加了spring-boot-starter-validation依赖项。当我尝试注入javax.validation.Validator时,出现错误org.springframework.beans.factory.NoSuchBeanDefinitionExceptionSpring启动器验证和验证器注入

这是否意味着spring-boot-starter-validation不会提供任何默认验证器,即LocalValidatorFactoryBean,而且我总是必须像在普通项目中一样自行创建它,而不使用spring引导?

@Component 
public class ExampleService{ 

    @Autowired 
    private Validator validator; 

    public void someMethod(){ 
      //validation 
    } 

} 

注入失败,如果Validator来自javax.validation或org.springframework.validation包,则无关紧要。

+0

您可以添加更多的代码和日志:缺少什么bean? – terjekid

+0

我已经添加了最简单的例子。 Spring Starter Project>验证依赖关系,以及这个简单的组件。注射失败。 – swch

回答

0

没有Beans提供开箱即用spring-boot-starter-validation因此为什么您遇到NoSuchBeanDefinitionException

请参阅以下rationale此起动,直接从马口:

此前,只有启动该提供的验证是 spring-boot-starter-web,其中包含Hibernate Validator和Tomcat的EL实现。这使得用户编写非web应用程序来找出他们自己的依赖关系。他们会因为Hibernate验证者对于EL实现的需要而有时会遇到困难,因为它们会让他们感觉不舒服。

此提交添加了一个新的启动程序spring-boot-starter-validation,其中 提供了Hibernate Validator和Tomcat的EL实现。 spring-boot-starter-web已更新为依赖此启动程序 ,而不是直接依赖Hibernate Validator。