Java 没有hibernate验证程序依赖项的Spring引导应用程序

Java 没有hibernate验证程序依赖项的Spring引导应用程序,java,spring,spring-boot,hibernate-validator,Java,Spring,Spring Boot,Hibernate Validator,我试图让spring引导(spring boot starter web:1.3.5.RELEASE和spring boot starter validation:1.3.5.RELEASE)在没有hibernate验证器依赖项的情况下工作。以下是我的选择: 选项1:使用默认OptionalValidatoryFactoryBean 选项2:查找其他jsr303实现-org.apache.bval:bval-jsr303或其他任何东西 我尝试了选项1,依赖项注入忽略此设置并查找hiberna

我试图让spring引导(spring boot starter web:1.3.5.RELEASE和spring boot starter validation:1.3.5.RELEASE)在没有hibernate验证器依赖项的情况下工作。以下是我的选择:

  • 选项1:使用默认OptionalValidatoryFactoryBean

  • 选项2:查找其他jsr303实现-org.apache.bval:bval-jsr303或其他任何东西

我尝试了选项1,依赖项注入忽略此设置并查找hibernate validator,但失败:

@Bean
public org.springframework.validation.Validator validator() {
    return new OptionalValidatorFactoryBean();
}
对于选项2,我将jar放在类路径上,依赖项注入不会选择实现


最好有一个除hibernate validator之外的工作验证程序流,或者至少提供一个类似选项1的虚拟验证。

您需要声明LocalValidatorFactoryBean类型的bean,而不是OptionalValidatorFactoryBean

你可以在网上找到更多关于这方面的信息


最后,确保类路径上只存在一个JSR-303/JSR-349提供程序(如Hibernate Validator或Apache Bval)的实现JAR,而不是两者都存在。

如果您选择选项1

选项1:使用默认OptionalValidatoryFactoryBean

这是Spring的MVC配置命名空间使用的实际类, 如果存在javax.validation API,但没有显式的 已配置验证程序

确保存在于类路径中

=====================================================


如果选择选项2,请使用而不是Hibernate Validator

选项2:查找其他JSR303实现- org.apache.bval:bval-jsr303或其他任何内容


添加maven依赖项:

<!-- Bean Validation -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

<dependency>
    <groupId>org.apache.bval</groupId>
    <artifactId>bval-jsr</artifactId>
    <version>1.1.2</version>
</dependency>

出于好奇,您对Hibernate验证器有什么问题?这是我的雇主的法律障碍,没有其他技术原因
<!-- Validator bean -->
<bean id="validator"
    class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass"
        value="org.apache.bval.jsr303.ApacheValidationProvider" />
</bean>
@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() throws ClassNotFoundException {
    LocalValidatorFactoryBean validatorBean = new LocalValidatorFactoryBean();
    validatorBean.setProviderClass(org.apache.bval.jsr303.ApacheValidationProvider.class));

    return result;
}
<!-- Bean Validation -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

<dependency>
    <groupId>org.apache.bval</groupId>
    <artifactId>bval-jsr</artifactId>
    <version>1.1.2</version>
</dependency>
***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target MyProperties(prop1=null, ...) failed:

    Property: prop1
    Value: null
    Reason: must not be null

Action:

Update your application's configuration