Spring启动验证和Validator注入

时间:2016-11-21 12:23:17

标签: spring spring-boot spring-validator

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

这是否意味着spring-boot-starter-validation没有提供任何默认的Validator,即LocalValidatorFactoryBean,我总是必须自己创建它,就像没有弹簧启动的普通项目一样?

@Component
public class ExampleService{

    @Autowired
    private Validator validator;

    public void someMethod(){
            //validation
    }

}

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

1 个答案:

答案 0 :(得分:0)

Beans开箱即可提供spring-boot-starter-validation,因此您遇到NoSuchBeanDefinitionException

的原因

直接从马口看到以下rationale这个启动器:

  

以前,唯一提供验证的启动器是   spring-boot-starter-web,其中包括Hibernate Validator和   Tomcat的EL实现。这使得用户编写非网络   应用程序,以找出自己的依赖关系。他们将   有时遇到困难,因为Hibernate Validator需要一个   EL实施会使它们绊倒。

     

此提交添加了一个新的启动器,spring-boot-starter-validation,它   提供了Hibernate Validator和Tomcat的EL实现。   spring-boot-starter-web已经更新,取决于这个启动器   而不是直接依赖Hibernate Validator。