Spring Boot 进阶-浅析SpringBoot中如何完成数据校验

在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。
但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在Spring Boot中整合对应的校验规则。而在我们Java中经常用到的校验规则就是JSR-303校验规则,下面我们就来看看如何在Spring Boot中整合校验规则。
JSR-303简介
JSR-303规则是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator,这个实现与Hibernate ORM 没有任何关系。JSR 303 用于对 Java Bean 的字段值进行验证。Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。也可以通过使用注解的方式进行验证。
那么在Spring Boot中如何使用呢?
添加对应的依赖
这里需要注意的是这个验证规则的引入是在Spring Boot中默认引入的所以在这里不需要指定版本号就可以使用了
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
添加好规则starter之后,下面我们就来看一下这个校验规则为我们提供了那些注解以便我们更加快捷高效地使用。
JSR 303 基本的校验规则
空检查
- @Null 验证对象是否为null
- @NotNull 验证对象是否不为null, 无法查检长度为0的字符串
- @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
- @NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
- @AssertTrue 验证 Boolean 对象是否为 true
- @AssertFalse 验证 Boolean 对象是否为 false
长度检查
- @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
- @Length(min=, max=) Validates that the annotated string is between min and max included.
日期检查
- @Past 验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期
- @Future 验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期
- @Patter
相关文章:
Spring Boot 进阶-浅析SpringBoot中如何完成数据校验
在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。 但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在Spr…...
◇【论文_20181020 v6】广义优势估计器 (generalized advantage estimator, GAE)
https://arxiv.org/abs/1506.02438 ICLR 2016 加州伯克利 电子工程与计算机科学系 High-Dimensional Continuous Control Using Generalized Advantage Estimation 文章目录 摘要1 引言2 预备知识3 优势函数估计4 解释为 奖励设计reward shaping5 价值函数估计6 实验6.1 策略优…...
JAVA后端项目须知
Eureka服务发现框架 Eureka是一个服务发现框架,由Netflix开发,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。12 Eureka是Spring Cloud Netflix的一个子模块,也是核心模块之一…...
Java设计模式——适配器模式
目录 模式动机 模式定义 模式结构 代码分析 模式分析 实例 优点 缺点 适用环境 模式应用 模式扩展 总结 模式动机 在软件开发过程中,经常会遇到需要使用已有类的功能,但这些类的接口不符合当前系统的需求,或者需要将不同的类的接…...
docker compose入门6—如何挂载卷
在 Docker Compose 中,可以通过 volumes 字段将宿主机的文件或目录挂载到容器中。这样可以实现数据持久化、共享数据或配置等。以下是一些常见的挂载方式和示例。 1. 挂载单个文件 如果你想将宿主机上的一个特定文件挂载到容器中,可以使用以下格式&…...
linux 环境下 docker 镜像获取失败, 重新设置docker镜像下载地址
1.查询镜像地址 https://hub.atomgit.com/repos/amd64/openjdk 2.docker file FROM hub.atomgit.com/amd64/openjdk:21-rc-jdk COPY xxxx.jar xxxx.jar EXPOSE xxxxx ENTRYPOINT ["java","-jar","-Xmx200M","-agentlib:jdwptransportdt_…...
【React】setState 是怎么记住上一个状态值的?
在 React 中,setState 通过 React 内部的状态管理机制来记住上一个状态值。即使每次组件重新渲染时,函数组件会被重新执行,React 仍能通过其内部的状态管理系统保持和追踪组件的状态变化。下面详细解释其工作原理: 1. setState 的…...
linux批量删文件
在 Linux 中,可以使用命令行工具来批量删除文件。以下是一些常用的方法: 使用 rm 命令 rm 是一个用于删除文件和目录的命令。使用此命令时应谨慎,因为删除操作是不可逆的。 删除特定类型的文件 例如,要删除当前目录下所有的 .tx…...
Kubernetes(K8s)的简介
一、Kubernetes的简介 1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应…...
线性查找法 ← Python实现
【线性查找法】 线性查找法顺序地将关键元素 key 和列表中的每一个元素进行比较。它连续这样做,直到这个关键字匹配列表中的某个元素,或者在没有找到匹配元素时已经查找完整个列表。如果找到一个匹配元素,那么线性查找将返回匹配在列表中的下…...
view deign 和 vue2 合并单元格的方法
1.vue版本和view design 版本 {"vue": "^2.6.11","view-design": "^4.7.0", }2.Data中定义数据 spanArr: [], // 某一列下需要合并的行数 pos: 0// 索引// 注意点: 在获取列表前,需要重置 this.spanArr [] 注…...
Arduino UNO R3自学笔记16 之 Arduino的定时器介绍及应用
注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习定时器的功能。 1.定时器介绍 定时器也是一种中断,属于软件中断。 它就像一个时钟,可以测量事件的时间间隔。 比如早…...
鸟类数据集,鸟数据集,目标检测class:bird,共一类13000+张图片yolo格式(txt)
鸟类数据集,鸟数据集,目标检测class:bird,共一类13000张图片yolo格式(txt) 鸟类数据集,鸟数据集,目标检测 class:bird,共一类 13000张图片 yolo格式(txt) 鸟…...
透明物体的投射和接收阴影
1、让透明度测试Shader投射阴影 (1)同样我们使用FallBack的形式投射阴影,但是需要注意的是,FallBack的内容为:Transparent / Cutout / VertexLit,该默认Shader中会把裁剪后的物体深度信息写入到 阴影映射纹…...
NL2SQL商业案例详解:AI智能开放搜索 OpenSearch
NL2SQL商业案例详解:AI智能开放搜索 OpenSearch 基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜索业务开发平台,目前为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。通过内置各行业的查询语义理解、机器学习排序算法等能力,以及充分开放的文本向…...
【万字长文】Word2Vec计算详解(一)
【万字长文】Word2Vec计算详解(一) 写在前面 本文用于记录本人学习NLP过程中,学习Word2Vec部分时的详细过程,本文与本人写的其他文章一样,旨在给出Word2Vec模型中的详细计算过程,包括每个模块的计算过程&a…...
【EXCEL数据处理】000022 案例 保姆级教程,附多个操作案例。EXCEL邮件合并工具
前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【EXCEL数据处理】000022 案例 保姆级教程,附多个操作案例。…...
第十五周:机器学习笔记
第十五周周报 摘要Abstract一、机器学习1. 各式各样神奇的自注意力机制1.1 Local Attention/Truncated Attention(截断注意力机制)1.2 Stride Attention(跨步注意力机制)1.3 Global Attention(全局注意力机制ÿ…...
Highcharts 散点图
Highcharts 散点图 介绍 Highcharts 是一个流行的 JavaScript 图表库,广泛用于网页上展示动态和交互式的图表。散点图是 Highcharts 提供的一种图表类型,它通过在二维坐标系中展示数据点的分布,来揭示变量之间的关系。散点图特别适用于展示和比较大量的数据点,从而发现数…...
谷粒商城踩坑
1.mysql表名大小写问题(P16) 问题描述:代码要求的是表名大写,但实际上数据库是小写的,就报错: 问题解决:未解决 mysql版本为5.7.44。网上有两种解决方式,但是都解决不了 1.1 解决方…...
Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移与动态生成
Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移与动态生成 1. 引言:当静态艺术遇见动态魔法 想象一下,你手中有一幅精美的水墨画或一张概念设计草图,如果能让它"活过来",变成一段流动的视频&a…...
避坑指南:OpenBMI运动想象实验中的‘跨被试’与‘不跨被试’到底怎么选?
避坑指南:OpenBMI运动想象实验中的‘跨被试’与‘不跨被试’到底怎么选? 当你第一次接触OpenBMI工具箱进行运动想象(Motor Imagery, MI)实验时,最令人困惑的决策之一就是如何选择数据划分策略。是采用**跨被试…...
如何用轻量级工具解决Windows运行Android应用难题?2024最新6种方案深度测评
如何用轻量级工具解决Windows运行Android应用难题?2024最新6种方案深度测评 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化办公与娱乐深度融合的今…...
Hotkey Detective:3步快速解决Windows热键冲突,找出占用快捷键的幕后黑手
Hotkey Detective:3步快速解决Windows热键冲突,找出占用快捷键的幕后黑手 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/h…...
用YOLOv8在树莓派上跑个‘狗脸识别’:斯坦福犬类数据集实战与轻量化部署指南
树莓派上的智能犬种识别:YOLOv8轻量化部署全流程实战 当你在公园遛狗时,有没有遇到过路人好奇询问狗狗品种的情况?传统的犬种识别往往依赖专业兽医或资深养犬人士的经验判断,而今天我们将用一块信用卡大小的树莓派,配合…...
Qwen3-0.6B-FP8与STM32开发联动:生成嵌入式系统控制逻辑伪代码
Qwen3-0.6B-FP8与STM32开发联动:生成嵌入式系统控制逻辑伪代码 1. 引言 如果你是一位嵌入式开发者,或者正在学习STM32,下面这个场景你一定不陌生:拿到一个传感器模块,比如温湿度传感器,想用它来控制一个风…...
16-bit像素UI有多酷?Pixel Epic智识终端交互设计与视觉效果展示
16-bit像素UI有多酷?Pixel Epic智识终端交互设计与视觉效果展示 1. 像素史诗:当科研遇上复古游戏 在数字世界的某个角落,一款名为Pixel Epic的智识终端正在重新定义AI工具的交互体验。这不是普通的报告生成器,而是一场将严肃科研…...
Python偏函数partial的用法小结
functools.partial(func, /, *args, **keywords) 会返回一个新可调用对象,它把原函数 func 的部分位置参数和/或关键字参数“预先绑定”。 这样你就能得到一个“定制版”的函数,后续只需要补齐剩余参数即可调用。返回对象类型是 functools.partial 实例&…...
AI赋能软件测试:基于PyTorch视觉模型实现自动化GUI测试脚本生成效果演示
AI赋能软件测试:基于PyTorch视觉模型实现自动化GUI测试脚本生成效果演示 1. 效果亮点预览 想象一下这样的场景:一个AI系统正在自动测试你的软件界面,它能像人类测试工程师一样"看"懂屏幕上的每个元素,发现那些传统脚本…...
租车宝 token、payload算法分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 部分python代码 url "/queryOr…...
