JSR303(一) 简介

2023-11-11

1.简介

数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致错误的发生(译注: 重复代码). 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面, 但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的元数据.



 

JSR 303 - Bean Validation规范 - 为Bean验证定义了元数据模型和API. 默认的元数据模型是通过Annotations来描述的,但是也可以使用XML来重载或者扩展. Bean Validation API 并不局限于应用程序的某一层或者哪种编程模型, 例如,如图所示, Bean Validation 可以被用在任何一层, 或者是像类似Swing的富客户端程序中.



 

2.实现

Hibernate Validator是JSR303的参考实现,本文将使用它来说明JSR303的使用方法。

注:hibernate-validator-4.*为JSR303的最新实现,hibernate-validator-5.*为JSR349 Bean Valildation 1.1的实现。

3.参考资料

JSR303官网 http://jcp.org/en/jsr/detail?id=303

Hibernate Validator官网 http://www.hibernate.org/subprojects/validator.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSR303(一) 简介 的相关文章

  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • php导出excel 下载,excel的导出和下载(实例讲解)

    1 前言 有时需要将数据库表资源导出excel 做成一些报表数据 而php导出excel的方法大致有几种 1 使用php的类库 进行导出 如PHPExcel 2 使用php原生的方法进行导出 而本文介绍的就是 如何通过原生方法导出excel
  • pandas筛选、修改并实现分类

    虽然学pandas有段时间了 但是真正应用的场合其实很少 大多数功能用excel就已经足够 最近发现wps表格某些功能比 excel还好用 比如筛选重复身份证 wps表格就做得比excel2016要好 最近发现了一个比较麻烦的问题 表格内容
  • JAVA中的术语:句柄是啥意思

    句柄的本质 一个唯一的整数 作为对象的身份id 区分不同的对象 和同类中的不同实例 程序可以通过句柄访问对象的部分信息 句柄不代表对象的内存地址 句柄和指针的区别 程序不能通过句柄直接阅读文件中的信息 指针是可以的 从所起的作用这点来说 句
  • 【项目实战】C语言+easyX带你实现:数字拼图游戏!来试试吧~

    每天一个编程小项目 提升你的编程能力 这是一个简易的拼图游戏 一共有 15 个数字方块 将其一行行的排列为 1 15 即可完成 游戏会记录下完成拼图的时间 我想说的是 很多时候 精彩的游戏不一定非要用图片 将游戏的功能和手感都做好 游戏一样
  • 卫星通信系统概述

    卫星通信系统指通过在轨人造卫星作为中继站对无线电信号进行转发 实现地面及空间等用户之间信息传输的系统 卫星通信系统组成包括空间段及地面段 系统组成如图所示 其中空间段主要指在轨卫星 对在轨卫星进行操控的地面站 这些地面站主要实现跟踪 遥测
  • 《QDebug 2023年8月》

    一 Qt Widgets 问题交流 1 获取 QWidget 当前所在屏幕区域 本来以为 QWidget 的 screen 接口返回的是组件自己所在屏幕的 QSreen 实测是所属 Window 所在的屏幕 如果 Window 跨屏了两者所
  • Android 内存分析工具

    Dalvik 虚拟机支持垃圾收集 但是这不意味着你可以不用关心内存管理 你应该格外注意移动设备的内存使用 手机和平板的内存空间是受到限制的 在这篇文章里面 我们来看看Android SDK里面的一些内存剖析工具 profiling tool
  • Windows11安装Vim编辑器配置指南

    Vim简介 Vim 是一个高度可配置的文本编辑器 旨在让创建和更改任何类型的文本变得非常高效 大多数 UNIX 系统和 Apple OS X 都将它作为 vi 包含在内 用惯了Linux中的Vim编辑器 如果需在Windows的cmd终端中
  • form表单的单输入框回车出现同步提交事件处理

    问题 form表单中如果只有一个输入框 在输入时按Enter回车键会出发默认事件自动提交表单 该交互是同步发生的 会导致页面刷新 解决思路 有三种解决思路 1 增加input输入框的数量 如果form表单中不止一个input输入框 那么该表
  • 基于Python的餐厅点餐系统-订餐食堂预约Python爬虫安装数据分析与可视化计算机毕业设计

    更多项目资源 最下方联系我们 目录 一 项目技术介绍 二 项目配套文档 部分内容 资料获取 一 项目技术介绍 该项目含有源码 文档 PPT 配套开发软件 软件安装教程 项目发布教程 包运行成功以及课程答疑与微信售后交流群 送查重系统不限次数
  • 《管理的套路》图解(二)

    13 Iceburg冰山模型 备注 在组织行为学中 冰山模型从三个层面来描述一个人 A态度 深层 B行为 表层 C能力 中间层 14 Burke Litwin组织变革模型 备注 除了考虑外部环境因素 组织和个人绩效因素以及沟通反馈外 还要考
  • 【python】【kNN】【OCR】用python实现字符识别

    一 问题 OCR 光学字符识别 是机器学习重要的应用之一 一般要经过二值化 去噪 倾斜校正 特征抽取 字符切割 字符识别 后处理等过程 其中难度最大的是字符切割 最关键的步骤是字符识别 一般进行字符识别的方法有kNN SVM CNN等方式
  • NUMA模式

    NUMA模式 补充经常听师兄们提到一个词NUMA模式 NUMA架构产生的背景 早期的计算机中 内存控制器在北桥中 所有CPU对内存的访问都要通过北桥来完成 此时所有CPU访问内存都是 一致的 如下图所示 这样的架构称为UMA Uniform
  • GPT3.5插件免费使用方法(无须科学上网)

    1 下载并安装微软Edge浏览器 2 在浏览器输入 edge extensions 或者在页面操作 3 在扩展页面搜索 webtab 插件 4 启用插件 在浏览器输入 edge extensions 回到扩展管理页面 随后会自动进入页面 选
  • 图的拓扑序列

    拓扑序列 拓扑序是按照点的先后顺序排列的 拓扑序列满足以下两点 1 每个顶点在序列中出现且只出现一次 2 若存在一条从顶点 A 到顶点 B 的路径 那么在序列中顶点 A 出现在顶点 B 的前面 拓扑序列只存在于有向无环图中 可以理解成一个将
  • replace和replaceAll区别

    1 replace的参数是char和CharSequence 即可以支持字符的替换 也支持字符串的替换 CharSequence即字符串序列的意思 说白了也就是字符串 2 replaceAll的参数是regex 即基于规则表达式的替换 比如
  • 浅谈一下Python的现状、发展前景以及Python的就业岗位(含趋势)

    在面对职业选择时我们难免纠结 徘徊 不知道去哪能走多远 我们没有办法只考虑当下 无视未来 当下Python工程师正处于人才需求旺盛 供应短缺的时期 工资一路上涨 假如 即便选择了目前火热的Python编程 那你需要先来了解一下Python的
  • 知识产权贯标补贴政策查询大全及怎么申请,奖励20万

    华夏泰科小编认为知识产权贯标旨在促进企业知识产权创造 运用 保护能力提高 使管理工作制度化 规范化 常规化 整体推进全省企业知识产权管理水平有效提升 申请后可以提升企业无形资产价值 巩固企业市场地位 可向科技主管部门申请战略推进项目 专利实
  • win10下设置maven环境变量

    一 先去maven官网 http maven apache org download cgi 下载压缩包 下拉页面可以看到好多版本 注意下载的版本为红色标注版本 apache maven 3 5 0 bin zip 点击下载即可 二 将下载
  • JSR303(一) 简介

    1 简介 数据校验是任何一个应用程序都会用到的功能 无论是显示层还是持久层 通常 相同的校验逻辑会分散在各个层中 这样 不仅浪费了时间还会导致错误的发生 译注 重复代码 为了避免重复 开发人员经常会把这些校验逻辑直接写在领域模型里面 但是这