news 2026/5/4 21:03:58

基于 (java) validation-api、hibernate-validator 的数据校验扩展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 (java) validation-api、hibernate-validator 的数据校验扩展

在Java 开发中,数据校验是保证系统健壮性和数据完整性的重要环节。`validation-api`和`hibernate-validator`功能强大,在这个基础上,做了一些检验简单扩展处理,在处理复杂业务场景时提供一些支持。

项目简介

`brilliant-validation`是一个基于Java validation-api和hibernate-validator的扩展库,通过引入AviatorScript 表达式引擎,实现了多字段关系校验,同时提供了一些单字段校验注解,让数据校验方便。

项目地址

✨ 主要功能

1. 基于Aviator的多字段关系校验


传统校验只能处理单个字段的规则,`brilliant-validation`支持使用AviatorScript表达式进行多字段之间的逻辑关系校验。

2. 单字段校验注解


内置了常用的单字段校验注解,如社会信用代码、身份证号、车牌号等。

📦 快速开始

添加依赖

> **版本说明**:
> - javax版本对应:2025.0.x
> - jakarta版本对应:2025.1.x

根据你的项目选择相应版本:

<dependencyManagement> <dependencies> <dependency> <groupId>top.hjjcgzlafr</groupId> <artifactId>brilliant-validation-bom</artifactId> <version>{version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependency> <groupId>top.hjjcgzlafr</groupId> <artifactId>brilliant-validation-validator</artifactId> </dependency>

🎯 使用指南

一、单字段校验注解
  • @ByteSize:字节长度校验
  • @CreditCode:社会信用代码校验
  • @IdentityCard:身份证号校验
  • @LicensePlate:车牌号校验
  • @Phone:手机号校验
二、多字段关系校验注解
  • @RelationCheck:单条关系校验
  • @RelationChecks:多条关系校验

💡 实战示例

示例测试项目地址

示例1:手机号校验
@Phone(message = "手机号不正确") private String mobile;
示例2:密码一致性校验(单条规则)
@RelationCheck(expr = "password == confirmPassword", message = "两次密码不一致") public class InfoDTO implements Serializable { private String password; private String confirmPassword; }
示例3:复杂业务规则校验(多条规则)
@RelationChecks({ @RelationCheck(expr = "password == confirmPassword", message = "两次密码不一致"), @RelationCheck(expr = "username != nil", message = "username不能为空") }) public class InfoDTO implements Serializable { private String password; private String confirmPassword; private String username; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 4:49:42

GPT-OSS-20B性能对比:低延迟与高效推理解析

GPT-OSS-20B性能解析&#xff1a;如何在16GB设备上跑出类GPT-4的推理表现&#xff1f; 你有没有遇到过这样的场景&#xff1a;本地部署一个“轻量级”大模型&#xff0c;结果显存爆了、响应慢如蜗牛、生成内容还经常卡壳&#xff1f;这几乎是每个尝试将大模型落地到消费级硬件…

作者头像 李华
网站建设 2026/5/3 18:38:58

C#通过HTTP请求调用GPT-SoVITS WebUI接口

C#通过HTTP请求调用GPT-SoVITS WebUI接口 在AI语音技术迅速渗透内容创作、智能交互和个性化服务的今天&#xff0c;越来越多开发者希望将高质量语音合成功能集成到自己的应用中。传统方案往往依赖昂贵的商业API或复杂的模型部署流程&#xff0c;而开源项目 GPT-SoVITS 的出现打…

作者头像 李华
网站建设 2026/5/1 0:35:43

HuggingFace镜像加速下载Seed-Coder-8B模型

本地化代码助手的起点&#xff1a;高效获取 Seed-Coder-8B 模型 在千兆宽带普及、算力触手可及的今天&#xff0c;真正卡住我们落地 AI 编程助手的&#xff0c;往往不是显卡不够强&#xff0c;而是——连不上模型仓库。 当你兴冲冲地打开终端&#xff0c;准备从 Hugging Face 下…

作者头像 李华
网站建设 2026/4/30 23:52:54

专业解析:泳池刷的面漆如何兼顾美观与耐用?

许多业主和管理方都困惑游泳池刷的什么漆才能既美观又耐用。作为水上游乐地坪的专业从业者&#xff0c;我去年亲自跟进过数十个泳池翻新项目&#xff0c;发现选择合适的装饰面漆至关重要。 装饰面漆的核心功能 游泳池刷的什么漆直接关系到整体视觉效果。传统材料容易褪色开裂。…

作者头像 李华
网站建设 2026/5/2 19:52:10

LobeChat能否获得赞助?Open Collective使用指南

LobeChat能否获得赞助&#xff1f;Open Collective使用指南 在今天的开源世界里&#xff0c;一个项目能不能“活下去”&#xff0c;早已不再只取决于代码写得有多漂亮。越来越多的优秀工具因为缺乏持续投入而逐渐沉寂——不是没人用&#xff0c;而是开发者撑不下去了。 LobeCha…

作者头像 李华
网站建设 2026/5/2 19:52:09

Opencd的数据扰动类型怎么加入

Opencd框架调用的是MMCV的transform包 在opencd/datasets/transforms的路径下&#xff0c; 由一个文件是transforms.py&#xff0c;在这个文件中注册数据扰动的新类型&#xff0c;在__init__.py中加入相应的数据扰动新类型的名字&#xff0c;就可以在standard_256x256_40k_lev…

作者头像 李华