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

news2024/11/23 2:52:53

在这里插入图片描述
  在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。

  但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++继承(下)

c继承&#xff08;下&#xff09; &#xff08;1&#xff09;继承与友元&#xff08;2&#xff09;继承与静态成员&#xff08;3&#xff09;多继承及其菱形继承问题3.1 继承模型3.2 虚继承3.3 多继承中指针偏移问题 &#xff08;4&#xff09;继承和组合&#xff08;9&#xf…

知识图谱构建方法汇总!

知识图谱构建过程是一个人机结合的不断迭代过程&#xff0c;以机器自动学习为主、专家定义与修正结合。需要人工介入的工作包括Schema定义、部分结构化知识准备、机器学习结果校验&#xff0c;依据用户的反馈、语料的增加与更新&#xff0c;不断进行模型的更新与迭代。 专业领域…

最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主

源码简介&#xff1a; 最新网课搜题神器小程序源码&#xff0c;它是仿了小猿题库&#xff0c;功能多&#xff0c;能很快速找网课答案&#xff0c;还自带流量主功能。 这个小程序类似小助手&#xff0c;一键搜题就有答案。而且支持激励视频流量主&#xff0c;能轻松变现。 源…

三点估算法-系统架构师(七十五)

1关于网络存储的叙述&#xff0c;正确的是&#xff08;&#xff09;。 A DAS支持完全跨平台的文件共享&#xff0c;支持所有操作系统 B NAS通过SCSI连接至服务器&#xff0c;通过服务器网卡在网络上传输数据 C FC SAN的网络介质为光纤通道&#xff0c;而IP SAN使用标准的以太…

C语言复习概要(四)

本文 1. 操作符的分类算术操作符关系操作符逻辑操作符 2. 二进制制和进制转换二进制与十六进制的表示进制转换算法 3. 原码、反码和补码原码反码补码 1. 操作符的分类 C语言中的操作符种类繁多&#xff0c;常用的主要操作符可以按照其功能进行如下分类&#xff1a; 算术操作符…

【机器学习-无监督学习】概率图模型

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

【Java】String 类详解:字符串操作的必备知识

&#x1f4c3;个人主页&#xff1a;island1314 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1 基本概念 java.lang.String 类用于描述字符串&#xff0c;Java程序中所有的字…

LeetCode讲解篇之79. 单词搜索

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历对矩阵中的每个点&#xff0c;对每个点采用深度优先搜索&#xff0c;检查是否能以当前点做为开头来匹配word 我们使用一个与矩阵相同规格的二维数组表示矩阵中对应的点是否被访问过&#xff0c;防止重复…

html+css+js实现Switch开关

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Switch…

优化阶乘求和

题目&#xff1a;求 的值。 思路&#xff1a;循环n次&#xff0c;每次求每一项的值&#xff0c;并加起来&#xff0c;求每一项的值需要求阶乘&#xff0c;而阶乘的时间复杂度为O(n)&#xff0c;所有总的时间复杂度为O(n^2)。所以这个方法不好。 优化&#xff1a;求每一项的值不…

华为OD机试 - 九宫格游戏(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

麒麟 操作系统介绍| 银河麒麟和中标麒麟操作系统| Kylin 麒麟iso 镜像下载地址 银河麒麟操作系统v10 |

目录 #申请试用小技巧&#xff0c; 所有麒麟系列的版本如下 详细介绍如下&#xff1a; 银河麒麟高级服务器操作系统 V10 1. 龙芯-MIPS64el 版 2. 申威版 3. 兆芯版 4. 海光版 5. 飞腾版 6. 鲲鹏版 7. AMD64版 8. 龙芯-LoongArch64 版 9. ARM64版 银河麒麟桌面操作…

BGP路由原理详解

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 一. BGP简介: 二. BGP报文中的角色 BGP的报文 BGP处理过程 BGP有限状态机 BGP属性 三. BGP作用 四. BGP选路 ​…

120页PPT企业对标管理指导:对标具有全球竞争力的世界一流企业

国有企业管理提升与对标管理是提升企业竞争力、实现可持续发展的重要途径。以下是对国有企业管理提升路线与对标管理的详细分析&#xff1a; 一、国有企业管理提升路线 明确战略定位&#xff1a; 根据市场需求和资源状况&#xff0c;确定企业的核心业务和发展方向。制定科学…

使用 docker-compose 启动 es 集群 + kibana

编写 docker-compose yaml version: v3 services:elasticsearch-node1:image: elasticsearch:7.17.24container_name: elasticsearch-node1ports:- "9200:9200"- "9300:9300"environment:- node.nameelasticsearch-node1- cluster.namemy-es-cluster- dis…

【Linux 】文件描述符fd、重定向、缓冲区(超详解)

目录 ​编辑 系统接口进行文件访问 open 接口介绍 文件描述符fd 重定向 缓冲区 1、缓冲区是什么&#xff1f; 2、为什么要有缓冲区&#xff1f; 3、怎么办&#xff1f; 我们先来复习一下&#xff0c;c语言对文件的操作&#xff1a; C默认会打开三个输入输出流&#xf…

SpringBoot 集成 Ehcache 实现本地缓存

目录 1、Ehcache 简介2、Ehcache 集群方式3、工作原理3.1、缓存写入3.2、缓存查找3.3、缓存过期和驱逐3.4、缓存持久化 4、入门案例 —— Ehcache 2.x 版本4.1、单独使用 Ehcache4.1.1、引入依赖4.1.2、配置 Ehcache4.1.2.1、XML 配置方式4.1.2.1.1、新建 ehcache.xml4.1.2.1.2…

字节放大招:无需LORA训练,小红书写真轻松搞定,Pulid-Flux换脸方案来了

前言 在这之前&#xff0c;SD常用的换脸节点还不支持Flux模型&#xff0c;使用Flux 做虚拟模特最好的方法是炼制人脸lora&#xff0c;但是炼丹是个有技术门槛的活。 之前文章有提过字节跳动的 Pulid团队&#xff0c;率先推出了Pulid-Flux模型&#xff0c;但是之前只能在线上使用…

vivo/iqoo原子笔记 拍试卷去手写或者叫还原试卷。

1、如果我们经常做试卷的时候&#xff0c;发现有错的&#xff0c;想重新做一下。那就要去掉原来的手写的答案。 2、网上的App或软件多的就是&#xff0c;但大多是要收费的&#xff0c;那么我们如何利用手机里的功能&#xff0c;来基本达到这一效果呢&#xff1f; 3、手机自动…

Spring Boot实现的医院资源优化工具

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…