当前位置: 首页 > news >正文

动态xml文件配置 hibernate validator 约束校验

父文章 入参校验产品化 schema_个人渣记录仅为自己搜索用的博客-CSDN博客

一般都是通过 注解进行校验, 很少看到 通过配置来进行校验.

自己再通过谷歌找到了官网文档hibernate validator constraint from xml

Hibernate Validator 8.0.0.Final - Jakarta Bean Validation Reference Implementation: Reference Guide

Q :  动态 java 约束写在 文本中, 读取文本, 对bean进行校验

A : 如下

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

            <dependency>
                <groupId>jakarta.validation</groupId>
                <artifactId>jakarta.validation-api</artifactId>
                <version>3.0.2</version>
            </dependency>

在 Java 中,可以使用 Hibernate Validator 的编程式 API 来读取约束定义,然后使用这些约束定义对 Java Bean 进行校验。这种方式可以将约束定义写在文本文件中,然后在运行时动态加载这些约束定义。

以下是一个使用编程式 API 进行约束校验的示例:

public class Config {private String name;private int age;// getters and setters
}public class ConfigValidator {public static void main(String[] args) throws IOException {// Load constraint definitions from text fileInputStream inputStream = new FileInputStream("constraints.txt");String constraints = new String(inputStream.readAllBytes());// Parse constraint definitions using Hibernate ValidatorValidatorFactory factory = Validation.byDefaultProvider().configure().addMapping(new ByteArrayInputStream(constraints.getBytes())).buildValidatorFactory();Validator validator = factory.getValidator();// Validate configuration using Hibernate ValidatorConfig config = new Config();config.setName("John");config.setAge(17);Set<ConstraintViolation<Config>> violations = validator.validate(config);// Print validation errorsif (!violations.isEmpty()) {for (ConstraintViolation<Config> violation : violations) {System.out.println(violation.getMessage());}}}
}

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#_adding_mapping_streams

在这个示例中,我们首先定义了一个 Config 类,它包含了一些属性。然后,我们创建了一个 ConfigValidator 类,它读取了一个名为 constraints.txt 的文本文件,并使用 Hibernate Validator 将其解析为约束定义。接下来,我们使用这些约束定义对 Config 对象进行验证,并将验证结果存储在 ConstraintViolation 对象的集合中。如果存在验证错误,则可以遍历 ConstraintViolation 对象并输出错误消息。

在 constraints.txt 文件中,我们可以使用 Hibernate Validator 的约束定义语言来定义约束。例如,以下是一个 constraints.txt 文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<bean-validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-2.0.xsd"><constraint-mappings><bean class="com.example.Config"><field name="name"><constraint annotation="javax.validation.constraints.NotNull"/></field><field name="age"><constraint annotation="javax.validation.constraints.Min"><element name="value">18</element></constraint></field></bean></constraint-mappings>
</bean-validation-config>

在这个示例中,我们使用 XML 格式定义了一个约束映射,它包含了一个 Config 类的约束定义。我们使用 field 元素来指定要验证的属性,然后使用 constraint 元素来指定要应用的约束。在这个例子中,我们使用了 @NotNull 和 @Min(18) 两个约束。

http://www.lryc.cn/news/90219.html

相关文章:

  • Vue绑定class样式与style样式
  • 集权攻击系列:如何利用PAC新特性对抗黄金票据?
  • 同程面试(部分)(未完全解析)
  • 讯飞星火_VS_文心一言
  • Java的集合
  • addr2line 使用,定位kernel panic 代码位置
  • OpenAI目前所有模型介绍
  • 【P43】JMeter 吞吐量控制器(Throughput Controller)
  • 方正书版命令详解
  • Gradio的web界面演示与交互机器学习模型,高级接口特征《6》
  • 本地项目上传到Git(Gitee)仓库
  • Android 12.0屏蔽掉SystemUI的某些通知提示音
  • 测试计划模板二
  • 华为OD机试真题B卷 Java 实现【分奖金】,附详细解题思路
  • IMX6ULL平台I2C数据结构分析
  • 实时时钟 RTC(2)
  • 弄懂局部变量
  • 倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨
  • 怎么发表CCF期刊?CCF期刊有什么不同之处? - 易智编译EaseEditing
  • feat:使用企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)
  • Java键盘事件处理及监听机制解析
  • Git详解——安装、使用、搭建、IDEA集成
  • 【JavaSE】Java基础语法(二十一):内部类
  • Ceph应用
  • Oxford online English-Chair a Meeting 05/29
  • LeetCode: 二叉树的直径(java)
  • springboot+vue+java旅行旅游景点酒店预订出行订票系统eaog5
  • Linux :: 【基础指令篇 :: 用户管理:(2)】::设置用户密码(及本地Xshell 登录云服务器操作演示) :: passwd
  • img[:, :, ::-1] 通俗理解
  • 基于springboot+vue+elementui的健身房会员管理系统的