我正在尝试让 spring-boot(spring-boot-starter-web:1.3.5.RELEASE 和 spring-boot-starter-validation:1.3.5.RELEASE)在没有 hibernate validator 依赖的情况下工作。这些是我的选择:
我尝试了选项 1,依赖注入(inject)忽略了这个设置并寻找 hibernate-validator 并失败:
@Bean
public org.springframework.validation.Validator validator() {
return new OptionalValidatorFactoryBean();
}
使用选项 2,我将 jar 放在类路径上,并且依赖注入(inject)没有选择实现。
最好有一个除 hibernate-validator 之外的工作 validator 流程,或者至少提供一个类似于选项 1 的虚拟验证。
最佳答案
如果您 选择选项1 ,
Option 1: Use default OptionalValidatorFactoryBean.
来自 OptionalValidatorFactoryBean 的 JavaDocs ,
This is the actual class used by Spring's MVC configuration namespace, in case of the javax.validation API being present but no explicit Validator having been configured.
确保 javax.validation API存在于您的类路径中。
==================================================== ===
如果您 选择选项2 , 使用 Apache BVal而不是 hibernate validator
Option 2: Find some other JSR 303 implementation - org.apache.bval:bval-jsr303 or anything else.
<!-- Validator bean -->
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass"
value="org.apache.bval.jsr303.ApacheValidationProvider" />
</bean>
或使用 JavaConfig
@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() throws ClassNotFoundException {
LocalValidatorFactoryBean validatorBean = new LocalValidatorFactoryBean();
validatorBean.setProviderClass(org.apache.bval.jsr303.ApacheValidationProvider.class));
return result;
}
关于java - 没有 hibernate-validator 依赖的 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030241/