是否有可用的JSR-303(bean验证)实现?

时间:2009-09-06 05:46:48

标签: java validation bean-validation

我知道有非标准的框架,例如commons-validator和hibernate验证器。

我想知道是否有人知道官方标准的实施。

6 个答案:

答案 0 :(得分:57)

现在有2个兼容的实现:

您可以在此处访问基准测试和快速描述:http://carinae.net/2010/06/benchmarking-hibernate-validator-and-apache-beanvalidation-the-two-jsr-303-implementations/

答案 1 :(得分:34)

Hibernate Validator是JSR-303的reference implementation

答案 2 :(得分:14)

答案 3 :(得分:3)

OVaL不是JSR-303验证器,但可以将jsr303约束转换为自己的约束。

答案 4 :(得分:3)

我认为Spring Framework从版本3开始变得符合JSR303标准。

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#validation-beanvalidation

Spring Framework 4.0在设置支持方面支持Bean Validation 1.0(JSR-303)和Bean Validation 1.1(JSR-349),并使其适应Spring的Validator接口。

答案 5 :(得分:1)

至2018年夏季,共有三种规格相互取代:

  • JSR 380(Bean验证2.0)
  • JSR 349(Bean验证1.1)
  • JSR 303(Bean验证1.0)

您可以咨询official site以获得更多详细信息。

Hibernate Validator 6.10是最新版本(380)的参考实现。我建议您看一下它的documentation(尽管它是很大的东西)。

如果仅需要快速介绍,

CUBA platform docs可以使您对主题的理解更短。 CUBA框架基于Spring和EclipseLink,因此您学到的东西也可以在常规的Spring + Hibernate项目中使用:)

较早版本的Hibernate Validator和Apache BVal支持JSR 349,它们都是“官方的”。

EclipseLink从Hibernate以外的ORM中支持JSR 349,并且可以使用HV提供的Validator接口。

如果可能的话,我建议不要使用旧版本(JSR 303),而是切换到349或380规格。他们更加成熟和富有。

即使项目中没有ORM,也可以在项目中使用Bean验证,例如,您可以在Java 2SE或Android应用程序中使用它(请参阅article),但是,这不是Bean验证的方法被设计为主要的东西。尽管可以单独使用这些验证器(HV和BVal)(您必须实例化并手动调用ValidatorExecutableValidator),但它们确实可以与Hibernate,Spring等框架一起使用或CUBA