gpt4 book ai didi

java - 为什么 Jersey 要求我在项目中包含 Bean 验证依赖项?

转载 作者:行者123 更新时间:2023-12-01 11:05:41 25 4
gpt4 key购买 nike

编辑:我正在使用 Jersey 2.22 和 Hibernate 4.1.4。

根据文档:

Bean Validation support in Jersey is provided as an extension module and needs to be mentioned explicitly in your pom.xml file (in case of using Maven)

据我了解,这不是必需的。然而,我在我的项目中也使用了 Hibernate,这可能是一个重要因素。

有趣的是,我在 Hibernate 中没有使用 bean 验证,一切都是用 XML 配置的老派(映射、持久性、 session 工厂等)。

每当我包含 validation-api-1.1.0-Final.jar 时,都会出现此错误org.hibernate.HibernateException:应用 BeanValidation 关系约束时出错来自 Jersey bundle ,作为我的依赖项的一部分。

我所做的临时修复是在我的 Hibernate 配置中禁用 javax.persistence.validation.mode ,一切正常。但问题是,我不想再碰我的配置,因为这个 Hibernate 项目在我的所有项目中都使用,我担心这个小小的改变可能会产生巨大的影响 - 我猜是偏执狂。

所以我有两个问题:

  1. 为什么 Jersey 要求我包含 Bean 验证依赖项? (从某种意义上说,如果我没有,我的应用程序将不断抛出异常)
  2. 鉴于我没有在 Hibernate 中使用 Bean 验证,但打算在 Jersey 中使用 Bean 验证,我是否最好禁用 javax.persistence.validation.mode?或者最好只包含一个 bean 验证 jar?

最佳答案

Why is Jersey requiring me to include a bean validation dependency? (requiring in the sense that if I don't have one, my app will keep throwing an exception)

我不知道为什么需要它。如果 Bean Validation 确实是可选的,那么也不应该依赖于 Bean Validation API。这可能需要在 Jersey 代码中使用一些反射。也许可选在这种情况下意味着您不需要实际的 Bean Validation 实现。如果您可以发布删除 Bean Validation API 时遇到的异常类型,将会有所帮助。

Seeing that I don't use bean validations for Hibernate but intend to use bean validations in Jersey, am I better off disabling javax.persistence.validation.mode? or will it be best to just include a bean validation jar?

Bean Validation 与 JPA 集成,这意味着如果您通过 EntityManager 使用 Hibernate ORM,则如果在类路径上检测到 Bean Validation,则将启用 Bean Validation。检测是通过 Bean Validation API jar 中的类进行的。因此,如果您添加 Bean Validation API jar,您就会启用 Bean Validation(尽管在您还添加像 Hibernate Validator 这样的 Bean Validation 提供程序之前也会有异常(exception))。如果类路径上有 Bean Validation API,则禁用基于 JPA 的验证的方法确实是通过 javax.persistence.validation.mode 属性。

因此,如果您想使用 Bean Validation 在 REST 级别上进行验证,您将需要 Bean Validation API + 一个实现(例如 Hibernate Validator)。一旦您在类路径上有了这两件事,并且您不想进行基于 JPA 生命周期的验证,您将需要将 javax.persistence.validation.mode 设置为 none > 也是如此。

关于java - 为什么 Jersey 要求我在项目中包含 Bean 验证依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com