Spring Validation —— 参数校验框架

news2024/11/24 1:05:21

案例说明——后端校验注册表单字段

        在编写注册功能时,需要考虑字段校验的情况,这时候可以采用 Spring提供的一套参数校验框架工具——Spring Validation。一下是使用的步骤:

1. 导入validation坐标

2. 在参数上添加 @Pattern注解,指定校验规则

3. 在controller类上添加@Validated注解

4. 在全局异常处理器中处理参数校验失败的情况 

 

扩展:Spring Validation教程

一、配置与依赖

依赖引入:对于Spring Boot项目,如果版本小于2.3.x,spring-boot-starter-web会自动引入hibernate-validator依赖。如果版本大于或等于2.3.x,则需要手动引入hibernate-validator依赖。

配置类:在某些情况下,可能需要创建配置类来配置LocalValidatorFactoryBean,以便自定义校验器的注册和校验规则的加载。

二、使用方式

实现Validator接口:通过创建实现Validator接口的类,并在其中定义校验逻辑。然后,在需要校验的对象上使用@Validated注解,并指定校验器类。

使用Bean Validation注解:直接在Java对象的属性上使用Bean Validation提供的注解来定义校验规则。Spring会自动识别这些注解,并在需要时进行校验。

基于方法的校验:在Spring MVC的Controller层,可以使用@Validated注解对方法参数进行校验。如果校验失败,Spring会抛出异常,并可以通过全局异常处理器进行处理。

三、常用注解

以下是将Spring Validation中常用的注解列成表格的形式:

注解描述适用类型
@Null验证对象是否为nullJava对象
@NotNull验证对象是否不为nullJava对象(不适用于基本数据类型包装类的空字符串)
@NotBlank检查字符串是否不为null、空字符串或只包含空格String
@NotEmpty检查集合、数组、String、Map等是否不为null或空Collection, Array, String, Map等
@Size(min, max)验证对象(Array, Collection, Map, String)长度是否在给定的范围之内Array, Collection, Map, String
@AssertTrue验证Boolean对象是否为trueBoolean
@AssertFalse验证Boolean对象是否为falseBoolean
@Past验证Date和Calendar对象是否在当前时间之前Date, Calendar
@Future验证Date和Calendar对象是否在当前时间之后Date, Calendar
@Pattern(regex)验证String对象是否符合正则表达式的规则String
@Min(value)验证Number和String对象是否大于等于指定的值Number, String(转换为Number后比较)
@Max(value)验证Number和String对象是否小于等于指定的值Number, String(转换为Number后比较)
@DecimalMin(value)验证数字字段是否大于等于指定的小数值(支持BigDecimal)BigDecimal, Number, String(转换为BigDecimal后比较)
@DecimalMax(value)验证数字字段是否小于等于指定的小数值(支持BigDecimal)BigDecimal, Number, String(转换为BigDecimal后比较)
@Digits(integer, fraction)验证数字字段的整数部分和小数部分的位数Number, String(转换为Number后校验)
@Range(min, max)确保数字字段在指定范围内(是@Min@Max的组合)Number, String(转换为Number后比较)
@Email确保字段是有效的电子邮件地址String

注意: 这些注解可以直接应用于Java对象的属性上,并通过Spring的校验机制进行验证。在Spring MVC的Controller层,可以通过@Valid@Validated注解来开启对这些注解的校验功能。如果校验失败,Spring会抛出异常,通常可以通过全局异常处理器进行处理。

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

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

相关文章

单细胞|Signac 进行 Motif 分析

单细胞|Signac 进行 Motif 分析 引言 本教程将指导您如何在Signac平台上进行DNA序列的基序(Motif)分析。会介绍两种基序分析的方法:一种是在一组差异可访问的峰值中寻找出现频率较高的基序;另一种是在不同细胞群组间进行基序活性的差异分析。 library(Si…

simpread-OpenAI推出Canvas:让ChatGPT成为更出色的项目协作者

引言 OpenAI在最新一轮融资中创下了VC融资历史上的记录,与此同时,他们也推出了一项令人瞩目的新功能——Canvas。Canvas是一个专门为项目协作设计的界面,旨在让ChatGPT成为更高效的项目协作者。在现有的ChatGPT应用之外,它打开了…

LC538 - 把二叉搜索树转换为累加树

文章目录 1 题目2 思路3 ACM模式参考 1 题目 https://leetcode.cn/problems/convert-bst-to-greater-tree/description/ 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree) 累加树&#…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-08

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-07 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-07目录1. GraphRouter: A Graph-based Router for LLM Selections摘要创新点算法模型实验效果结论推荐阅读指数 2. DOTS: Learni…

2024年诺贝尔物理学奖授予AI先驱 Hopfield 和Hinton,奖金1100万瑞典克朗,他们是ChatGPT的忠实用户

2024年诺贝尔物理学奖得主:AI领域的杰出科学家 获奖者 2024年诺贝尔物理学奖的获奖者是两位在人工智能(AI)尤其是机器学习技术方面做出杰出贡献的科学家:约翰霍普菲尔德和杰弗里欣顿。 瑞典皇家科学院在周二宣布,这两…

Shamiko模块:隐藏root

开启Zygisk 在安装Shamiko模块之前,需要使用面具开启Zygisk,在面具的设置里可以开启,开启后重启手机Zygisk生效。 开启后的样子 开启面具随机报名 在面具的设置里,找到“隐藏Magisk应用”,点击这个选项&#xff0…

ESP8266使用AT指令完成MQTT功能

ESP8266使用AT指令完成MQTT功能 在esp8266设备中烧录安信可的AT固件之后,进行AT指令完成信息发布,并最终实现在Homeassistant中发布传感器并设置传感器状态。 一、基础指令 以下是完整的步骤和对应的AT指令: 1. 配置ESP8266为Station模式 …

在线培训知识库管理系统:企业的明智之选

在当今这个快速变化的时代,企业之间的竞争日益激烈,知识更新速度之快前所未有。为了保持竞争力,企业不仅需要不断引入新技术、新方法,还需要确保员工能够及时掌握这些新知,将其转化为生产力。在此背景下,在…

codetop标签双指针题目大全解析(四),双指针刷穿地心!!!!!

复习复习复习!! 1.长度最小的子数组2.移动零3.盛水最多的容器4.旋转链表5.最接近的三数之和6.删除有序数组中的重复项7.返回倒数第k个节点的值8.四数之和9.验证回文串 1.长度最小的子数组 考滑动窗口的 要注意是大于等于不是等于 看错题目一顿调 class …

CNAI趋势下,打造一体化AI赋能平台

在数字化转型的浪潮中,人工智能(AI)已成为推动企业创新和转型的核心力量。云原生技术以其灵活性和可扩展性,为AI的应用和发展提供了坚实的基础。本文将探讨云原生人工智能(CNAI)如何为企业带来颠覆性的变革…

cnn突破八(两层卷积核bpnet网络扩展)

cnn突破七中x【?】怎么求?我们举个例子: 接着cnn突破七: hicnn【】来自temphicnn【】2*2最大池化: temphicnn[0]x[i0,j0,5*5方阵]*w1cnn[0-24], hicnn是5*5的,temphicnn是10*10的&#xff0…

YOLOv8改进 - 注意力篇 - 引入SimAM注意力机制

一、本文介绍 作为入门性篇章,这里介绍了SimAM注意力在YOLOv8中的使用。包含SimAM原理分析,SimAM的代码、SimAM的使用方法、以及添加以后的yaml文件及运行记录。 二、SimAM原理分析 SimAM官方论文地址:SimAM文章 SimAM官方代码地址&#…

【土地那些事儿】一文读懂“集体所有土地”

今天咱们来聊一个既熟悉又神秘的概念——集体所有土地。在中国广袤的大地上,除了国有土地外,还有一种特殊的土地所有权形式,它关乎亿万农民的切身利益,那就是集体所有土地。来,让我们一起揭开它的面纱吧! …

根据指数做波段年化利率分析

根据指数做波段年化利率分析 股票投资,是众多投资方式中的一种。然而,每个人有不同的炒股方式,对股票不同的操作也会获得不同的收益/损失。作为“金融消费者”,如何做好自己在股票中的消费行为,是一门巨大的学问。这里…

D31【python 接口自动化学习】- python基础之输入输出与文件操作

day31 文件的打开 学习日期:20241008 学习目标:输入输出与文件操作﹣-43 常见常新:文件的打开 学习笔记: 文件的概念 使用open()函数打开文件 文件路径处理 文件打开模式 总结 文件操作包括:打开&#…

C++:string (用法篇)

文章目录 前言一、string 是什么?二、C语法补充1. auto2. 范围for 三、string类对象的常见构造1. Construct string object2. String destructor3. operator 四、string迭代器相关1. begin与end1)begin2)end3)使用 2. rbegin 与 r…

第33次CCF计算机软件能力认证-第4题十滴水

题干: 十滴水是一个非常经典的小游戏。 小 C C C 正在玩一个一维版本的十滴水游戏。 我们通过一个例子描述游戏的基本规则。 游戏在一个 1 c 1c 1c 的网格上进行,格子用整数 x ( 1 ≤ x ≤ c ) x(1≤x≤c) x(1≤x≤c) 编号,编号从左往…

Metal之旅——数据

顶点数据 顶点数据(Vertex Data)是指一系列顶点的集合,这些顶点用于图形渲染管线的输入。每个顶点通常包含位置、颜色、纹理坐标等属性信息 mesh网络 Mesh网络是指metal中通过将不同数量形状的三角形拼在一起覆盖在要绘制图形表面的网络 顶…

007集—— 自动获取图形的外边界(外轮廓)(CAD—C#二次开发入门)

本文只适用于闭合多段线组成的图像,其他情况(圆、弧、椭圆、未封闭line)暂不支持。 效果如下图所示: 原始图: 代码运行后图: 附代码: public class 外轮廓{Database db = HostApplicationServices.WorkingDatabase;[CommandMethod("xx")]public void Demo(…

基于SSM车位租赁系统【附源码】

基于SSM车位租赁系统 效果如下: 注册页面 首页展示 车位租赁订单展示 车位列表页面 公告信息管理页面 公告类型管理界面 研究背景 随着经济的持续增长和城市化进程的加速,土地资源变得日益紧缺,停车难问题已成为许多城市面临的共同挑战。随…