使用Hibernate Validator Engine时需要Bean Validation API吗?

时间:2016-03-04 14:40:41

标签: maven java-ee bean-validation nhibernate-validator

在我的Java EE 7 OpenShift项目中,我使用的是javaee-api 7.0版。对于我的模型,我添加了depency validation-api版本1.1.0,但这还不够。然后我尝试了

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>5.2.4.Final</version>
  <scope>provided</scope>
</dependency>

这是有效的。 这个依赖中是否隐含了validation-api?

1 个答案:

答案 0 :(得分:2)

Bean验证和Hibernate验证器

Hibernate ValidatorBean Validation 1.1规范的参考实现。

例如,检查Maven Repository,您会发现hibernate-validator工件确实包含 validation-api工件作为依赖项。

Bean验证和Java EE 7 API

Bean验证在javax.validation包和子包中定义。

Java EE 7是umbrella specification,除其他规范外,还包括Bean Validation 1.1规范。

这意味着javaee-api工件包含javax.validation包和子包。但是,没有提供Bean Validation的实现作为该工件的依赖项。

另一方面,一些容器(如WildFly和GlassFish)提供Hibernate Validator依赖项(或任何其他Bean Validation实现)以符合Java EE 7规范。在这种情况下,如果要使用Hibernate Validator中的特定(即org.hibernate.validator包或子包中的某些内容),则需要添加{{3}与provided范围的依赖关系。

否则,如果您不使用Hibernate Validator中的任何特定内容,hibernate-validator依赖项应该没问题。