我创建了简单的非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包,则无关紧要。
答案 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。