游戏攻略

Java数据验证API:javax.validation和jakarta.validation

栏目:游戏攻略 日期: 作者:游戏资讯

javax.validation jakarta.validation 都是Java中用于数据验证的相关API,提供了一套标准的验证框架,用于验证Java对象的属性是否符合指定的约束条件。这两个API的作用类似,只是在Java EE平台的演进过程中发生了一些变化。

javax.validation

  • javax.validation 是最初引入Java EE平台的数据验证API,定义在JSR 303(Bean Validation 1.0)和JSR 380(Bean Validation 2.0)中。
  • 提供了注解(如@NotNull、@Size、@Email等)和验证器(Validator)等核心概念,用于对Java对象进行数据验证。
  • 可以通过 Validator 接口来执行验证操作,检查对象是否符合预定义的约束。
  • 在Java EE 6及之后的版本中,可以直接使用 javax.validation 进行数据验证。

jakarta.validation

  • jakarta.validation 是随着Java EE平台向Jakarta EE的迁移而产生的,为了避免因商标问题将原有的 javax 包迁移到 jakarta 包下。
  • jakarta.validation javax.validation 具有相同的功能和API,但包名不同,属于Jakarta EE规范的一部分。
  • 随着Java EE的发展,未来新的版本可能会使用 jakarta.validation 作为默认的数据验证API。

作用:

  • 数据验证 :通过注解和验证器,对Java对象的属性进行验证,确保数据符合指定的约束条件。
  • 提高数据质量 :有效地防止无效数据进入系统,提高数据的准确性和完整性。
  • 简化开发 :通过标准化的验证框架,简化数据验证逻辑的编写和维护工作。

总的来说, javax.validation jakarta.validation 都是用于数据验证的标准API,可以帮助开发者实现对Java对象的数据验证功能,并提高系统的数据质量和稳定性。根据具体的Java平台版本和规范要求,选择合适的验证API来进行数据验证。

可能涉及到的包引用

jakarta

<dependency>
  <groupId>jakarta.validation</groupId>
  <artifactId>jakarta.validation-api</artifactId>
  <version>3.0.2</version>
</dependency>
<dependency>
  <groupId>org.hibernate.validator</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>7.0.5.Final</version>
</dependency>

javax

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.1.0.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>5.4.3.Final</version>
</dependency>

请注意,当你手动引用hibernate-validator包时,是不需要再手动引用validation-api的,因为它已经被hibernate-validator依赖了

什么时候需要手动引用jakarta.validation-api

当你需要手动使用 Validation 对象时,这时,你必须手动显示的引入 jakarta.validation-api ,或者早期的 javax.validation:validation-api 包。

错误排除

当你使用7.0.5.Final版本的validator后,可能出现如何错误 dubbo rest business exception, error cause is: null message is: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath. ,这时,你需要升级你的版本,来解决这个错误,升级包如下:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>8.0.1.Final</version>
</dependency>

升级到8.0.1.Final之后,问题得到解决,可正常提供错误消息

验证工具类

/**
 * bean对象属性验证 使用此方法等同于参数前加注解@Validated,@Valid
**/
public class BeanValidatorUtils {

  private static final ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

  /**
   * 校验实体中字段的合法性
   * @param object
   * @param groups
   * @throws ConstraintViolationException
   */
  public static void validateWithException(Object object, Class<?>... groups) throws ConstraintViolationException {
    Set<ConstraintViolation<Object>> constraintViolations = validatorFactory.getValidator().validate(object, groups);
    if (!constraintViolations.isEmpty()) {
      throw new ConstraintViolationException(constraintViolations);
    }
  }

}

关键词:

相关资讯

  • 《夜族崛起》工人血型四有什么效果

    《夜族崛起》中,我们需要扮演一只吸血鬼,建造自己的家园,并对抗强大的敌人。在游戏中,有许多不同的血型,其中工人血型是一种,可以...
  • Java数据验证API:javax.validation和jakarta.validation

    javax.validation 和 jakarta.validation 都是Java中用于数据验...
  • dnf手游气功师加点指南

    很多格斗家职业的玩家选择转职为气功师,该职业有输出同时又能够辅助,操作性也很不错。下面带来dnf手游气功师加点指南,各位小伙伴...
  • 数据分析---pandas模块

    为什么要学习pandas? numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是...
  • 《星露谷物语》离婚步骤分享

    很多《星露谷物语》的玩家都和游戏中的NPC结婚了。但是结婚后,如果想要离婚,又该怎么办呢?下面就让我们来了解一下《星露谷物语》...
  • 《鸣潮》中忌炎的培养攻略

    鸣潮中的T0级别输出角色忌炎,是一名非常重要的角色。下面是忌炎的培养攻略: 首先,忌炎的技能优先级为共鸣解放、共...