javax.validationjakarta.validation都是用于Java中进行数据验证(validation)的相关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.validationjavax.validation具有相同的功能和API,但包名不同,属于Jakarta EE规范的一部分。
  • 随着Java EE的发展,未来新的版本可能会使用jakarta.validation作为默认的数据验证API。

作用:

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

总的来说,javax.validationjakarta.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);
}
} }

dubbo~javax.validation和jakarta.validation的介绍与排雷的更多相关文章

  1. JSR303/JSR-349,hibernate validation,spring validation 之间的关系

    JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,他们位于javax.validation.co ...

  2. web.xml文件报错'org.springframework.web.filter.CharacterEncodingFilter' is not assignable to 'javax.servlet.Servlet,jakarta.servlet.Servlet'

    在web.xml文件中出现下列错误:'org.springframework.web.filter.CharacterEncodingFilter' is not assignable to 'jav ...

  3. 开源:Taurus.MVC-Java 版本框架 (支持javax.servlet.*和jakarta.servlet.*双系列,内集成微服务客户端)

    版本说明: 因为之前有了Taurus.MVC-DotNet 版本框架,因此框架标了-Java后缀. .Net  版本: 开源文章:开源:Taurus.MVC-DotNet 版本框架 (支持.NET C ...

  4. ssis error at other ssis.pipeline "ole db destination" failed validation and returned validation status

    我在修改一个ssis的包,发现这个destination的表被改过了.所以就重建了表.就导致了这个错误. 打开包重新检查下表结构的匹配就好了

  5. JSR 303 - Bean Validation 介绍及最佳实践

    JSR 303 - Bean Validation 介绍及最佳实践 JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 ...

  6. javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

    项目依赖 <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifa ...

  7. JSR 303 - Bean Validation 介绍及最佳实践(转)

    JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 Java EE 6 发布,Bean Validation 作为一个 ...

  8. Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider

    问题现象:今天部署代码的时候发现,在beta环境可以正常部署,但是到了test环境就一直不成功,我以为是环境问题,就重新部署,但是没效,看了看日志发现问题是:Caused by: java.lang. ...

  9. 利用 Bean Validation 来简化接口请求参数校验

    团队新来了个校招实习生静静,相互交流后发现竟然是我母校同实验室的小学妹,小学妹很热情地认下了我这个失散多年的大湿哥,后来... 小学妹:大湿哥,咱们项目里的 Controller 怎么都看不到参数校验 ...

  10. springMVC引入Validation详解

    本文简单介绍如何引入validation的步骤,如何通过自定义validation减少代码量,提高生产力.特别提及:非基本类型属性的valid,GET方法的处理,validation错误信息的统一re ...

随机推荐

  1. Ubuntu SVN 需要证书及密码验证问题

    问题概览 问题一 Ubuntu 20.04 下使用 SVN ,会报错 SVN 的证书错误,无论是选择接受 t 还是永久接受 p,下次都会要求再次接受:在 kali 或者 Windows 上没有出现该问 ...

  2. Python 潮流周刊第 46 期(摘要)+ 赠书 7 本

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  3. windows server 出现.net 3.5安装不上去

    前言 有人说为什么到了现在还有人用.net 3.5呢?其实我也不用,主要是mmsql安装的时候要用到. 正文 一般我们不同电脑在程序和功能中添加,如果添加不上会弹出一个自动获取的一个过程,这时我们点击 ...

  4. 【Oracle笔记】递归以及索引的一丢丢使用

    [笔记]递归以及索引的一丢丢使用 递归写法,树查询 connect by nocycle prior START WITH XXX CONNECT BY PRIOR XXX ORDER BY XXX ...

  5. 工商银行分布式服务 C10K 场景解决方案

    简介: Dubbo 是一款轻量级的开源 Java 服务框架,是众多企业在建设分布式服务架构时的首选.中国工商银行自 2014 年开始探索分布式架构转型工作,基于开源 Dubbo 自主研发了分布式服务平 ...

  6. [PHP] Laravel 的 503 Service Unavailable 模板提示的来源

    当我们看到 Laravel 的 503 样式的模板时,是启用维护模式的时候的提示(php artisan down). 开启访问运行 php artisan up. Refer:Laravel 503 ...

  7. java 高并发下超购问题解决

    //@desc:java 高并发下锁机制初探 //@desc:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2021/1 ...

  8. netcore热插拔dll

    项目中有有些场景用到反射挺多的,用到了反射就离不开dll的加载.此demo适用于通过反射dll运行项目中加载和删除,不影响项目. ConsoleApp: 1 using AppClassLibrary ...

  9. vue的三种组件传值方式

    一.父传子 1.在父组件引入的子组件标签内给需要传递的值自定义名称 <AlertSzs  :abc='gameType'></AlertSzs> 2.在子组件内用props接收 ...

  10. jemeter中json提取器

    1.A接口中的单个参数提取,之后用于其他接口 a. 在需要提取字段的接口上右击添加----后置处理器-----json extractor b. 填写json提取器的数据 1.名称:随便填写,方便自己 ...