Java Spring验证与Hibernate验证

Java Spring验证与Hibernate验证,java,spring,validation,hibernate-validator,Java,Spring,Validation,Hibernate Validator,我现在对这两者感到困惑。我知道HibernateValidator6是BeanValidation2.0规范的参考实现。它支持分组, 错误消息国际化、自定义方法验证等。 问题是Spring5支持这些特性,还是我只剩下HibernateValidator6 为什么我应该在Spring启动项目中使用Hibernate验证器而不是提供的Spring验证?我的公司需要使用任何第三方库的理由 所有在线参考示例都建议使用Hibernate Validator,但在Spring验证中没有找到什么内容,请建议或

我现在对这两者感到困惑。我知道HibernateValidator6是BeanValidation2.0规范的参考实现。它支持分组, 错误消息国际化、自定义方法验证等。 问题是Spring5支持这些特性,还是我只剩下HibernateValidator6

为什么我应该在Spring启动项目中使用Hibernate验证器而不是提供的Spring验证?我的公司需要使用任何第三方库的理由

所有在线参考示例都建议使用Hibernate Validator,但在Spring验证中没有找到什么内容,请建议或指向其他链接。

根据

通过Bean验证,一个javax.Validation.Validator实例 通常验证声明验证的所有模型对象 限制。使用Spring配置这样一个JSR-303支持的验证器 MVC,只需添加一个Bean验证提供程序,如Hibernate 验证程序,到您的类路径

您可以通过使用
springbootstarterweb
依赖项创建示例springboot项目来验证这一点。它实际上将hibernate验证器依赖项添加到类路径中

以下是spring教程中jsr-303的几个链接:


  • Hibernate验证是JSR303:Bean验证API的实现。Spring有它的验证包(它支持JSR303:Bean验证API,但不支持正确的实现)


    您可以注意到,
    org.springframework.validation.Validator
    不同于
    javax.validation.Validator


    您只需创建一个实现
    org.springframework.Validation.Validator
    的类即可执行Spring验证,方法非常简单,但如果需要遵循JSR 303:Bean验证API的规范,您可以通过Hibernate验证程序来执行

    好的,我再补充一些细节

    1) 如果您想执行(某些)验证,可以使用spring来完成。 (以下是一些片段):

    2) 如果要执行(JSR303规范)验证,需要有Hibernate之类的提供程序

    import javax.validation.Validator;
    class MyService{
            ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); //Bootstraping
            Validator validator = factory.getValidator(); 
           //perform validation
    }
    
    上面的引导过程由Spring框架支持。您只需让spring为
    LocalValidatoryFactoryBean

    <bean id="validator"   
     class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
    

    感谢您的输入,您是说我不能仅独立使用Spring Validator,它下面将始终使用Hibernate Validator?org.springframework.validation.Validator接口可以独立使用,但它实际上是spring上下文工件的一部分,而spring上下文工件又依赖于org.hibernate:hibernate验证器这并不完全正确,spring验证不依赖于hibernate。您要提到的是“配置一个JSR-303/JSR-349验证器供Spring MVC使用”,如果您想执行“使用Spring的验证器接口进行验证”,您不需要hibernate验证器。
    <bean id="validator"   
     class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
    
    import javax.validation.Validator;
    
    @Service
    public class MyService {
    
        @Autowired
        private Validator validator;
    }