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

Bean Validation API needed, when using Hibernate Validator Engine?

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

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

这行得通。 验证-api 是否隐含在这种依赖关系中?

Bean 验证和 Hibernate 验证器

Hibernate Validator is the reference implementation of the Bean Validation 1.1规范。

检查 Maven Repository, for example, and you'll realize the hibernate-validator artifact does include the validation-api 工件作为依赖项。

Bean 验证和 Java EE 7 API

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

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

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

另一方面,某些容器(例如 WildFly 和 GlassFish)提供 Hibernate Validator 依赖项(或任何其他 Bean Validation 实现)以符合 Java EE 7 规范。在这种情况下,如果你想使用来自 Hibernate Validator specific 的东西(即来自 org.hibernate.validator 包或子包的东西),你需要添加 hibernate-validatorprovided 范围的依赖关系。

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