Spring Boot中的数据校验 Validation

SpringBoot使用Validation校验参数 JSR(Java Specification Requests)是Java界的重要标准;JSR又细分很多标准,其中JSR303就代表Bean Validation。更多细节可参考:https://jcp.org/en/jsr/detail?id=303。 目录 准备工作 约束性注解(简单)说明 @Validated的使用时机 @Validated与@Valid的简单对比说明... 阅读详情

先列一下常用的Validation注解

注解作用
@NotNull值不能为空
@Null值必须为空
@Pattern(regex=)字符串必须匹配正则表达式
@Size(min, max)集合或者数组元素的数量必须在min和max之间
@CreditCardNumber(ignoreNonDigitCharacters=)字符串必须是信用卡号,按找美国的标准验证
@Email字符串必须是Email地址
@Length(min, max)检查字符串的长度
@NotBlank字符串不能为空串
@NotEmpty字符串不能为null, 集合或者数组的 size 不能为空
@Range(min, max)数字必须大于min, 小于max
@SafeHtml字符串必须是安全的html
@URL字符串必须是合法的URL
@AssertFalse值必须是false
@AssertTrue值必须是true
@DecimalMax(value=, inclusive=)值必须小于等于(inclusive=true)/小于(inclusive=false)属性指定的值,也可以注释在字符串类型的属性上。
@DecimalMin(value=, inclusive=)值必须大于等于(inclusive=true)/小于(inclusive=false)属性指定的值,也可以注释在字符串类型的属性上。
@Digist(integer=,fraction=)数字格式检查。integer指定整数部分的最大长度,fraction指定小数部分的最大长度
@Future时间必须是未来的
@Past事件必须是过去的
@Max(value=)值必须小于等于value指定的值。不能注解在字符串类型属性上。
@Min(value=)值必须小于等于value指定的值。不能注解在字符串类型属性上。

最常用的方式只要在需要校验的变量前加@Valid 然后在变量的属性上加上各种需要的注解就可以了

如:

    @PostMapping
    Mono<Result<AccountDTO>> create(@RequestBody @Valid AddAccountDTO addAccountDTO) {
    /**
     * 租户ID
     */
    @NotBlank
    private String tenantId;
    /**
     * 账户名称
     */
    @NotBlank
    private String accountName;
    /**
     * 认证账户名
     */
    private String authAccountName;
    /**
     * 昵称
     */
    @NotBlank
    private String nickname;

如果是单个的参数,比如是一个 PathVariable 就可以把注解验证的注解直接加到参数的前边。

    @GetMapping(value = "/bind/email/{accountId}")
    Mono<Result<String>> bindEmailRequest(@PathVariable Long accountId, @NotBlank String newEmail) {

这里会有一个小问题,当参数不合法的时候,控制台会打印错误,而且返回结果的说明也不太好看。

这时候就需要增加自动定义的异常处理。

/**
 * @Author: tiantao
 * @Date: 2020/9/9 10:28 AM
 * @Version 1.0
 */
@Component
public class GlobalErrorAttributes extends DefaultErrorAttributes {

    public GlobalErrorAttributes() {
        super(false);
    }

    @Override
    public Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
        return assembleError(request);
    }

参考文章:https://blog.youkuaiyun.com/u012373815/article/details/72049796

学习Spring Boot:(十)使用hibernate validation完成数据后端校验 前言 后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性及效率。 了解 了解一点概念性的东东。 * JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中 。 * Hibernate Va... 阅读详情

相关推荐

Spring Boot 数据校验: Bean Validation 注解、分组校验与全局异常处理

注解作用示例自定义校验器在 Spring Boot 2.3.x 版本中,Bean Validation 参数校验的使用方式与之前版本略有不同,尤其是在错误处理和响应格式的自定义上。从 Spring Boot 2.3 开始,spring-boot-starter-validation 不再默认包含,需要手动添加依赖错误属性的获取方式略有变化,推荐使用 ErrorAttributeOptionsSpring Boot 2.3.x 中推荐使用。

weixin_43833540的博客 1076

强悍的Spring之spring validation

spring validation实现对Restful请求的数据进行校验 1、前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,如果数据库中出现一个非法的邮箱格式,也会让运维人...

steven2xupt的博客 3万+

用注解进行参数校验,spring validation介绍、使用、实现原理分析

spring validation是什么 在平时的需求开发中,经常会有参数校验的需求,比如一个接收用户注册请求的接口,要校验用户传入的用户名不能为空、用户名长度不超过20个字符、传入的手机号是合法的手机号格式等等。遇到这种情况很多人会在controller接口中去写一些判断代码。但是如果我们又提供了一个修改用户信息的接口,这个接口也需要对用户的参数进行校验,那么我们的校验代码就会散落在两个地方,和真正的业务处理逻辑耦合在一起,而且如果未来要新增一种校验逻辑也需要在修改多个地方。...

刘正阳的专栏 7616

spring数据校验:Validation

在开发中,我们经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式,我们会把校验的代码和真正的业务处理逻辑耦合在一起,而且如果未来要新增一种校验逻辑也需要在修改多个地方。而spring validation允许通过注解的方式来定义对象校验规则,把校验和业务逻辑分离开,让代码编写更加方便。Spring Validation其实就是对Hibernate Validator进一步的封装,方便在Spring中使用。

一个菜鸡的博客 5170

Spring Boot技术知识点:如何使用@Valid注解来对邮箱字段进行数据校验

Spring Boot技术知识点:如何使用@Valid注解来对邮箱字段进行数据校验

STM32G0——USB虚拟串口

STM32G0用cubeMX配置实现USB虚拟串口

阿昌 2318

Spring Boot系列十四 Spring boot使用spring validation实现对Restful请求的数据进行校验

1. 概述本文介绍在Spring Boot中实现对请求的数据进行校验。数据校验常用到概念: JSR303/JSR-349 1. 演示spring boot validation + 异常捕获机制实现数据自动校验功能 2. 自定义校验注解,并演示这个用法

不积跬步无以至千里; 不积小流无以成江海 1万+

Windows本地化部署Dify完整指南

本文详细介绍了在Windows系统上本地化部署Dify的完整步骤,涵盖了Docker Desktop的安装与配置、Dify源代码的获取、环境变量的设置、服务的启动与管理、以及常见问题的解决方案。文章首先指导用户如何下载和安装Docker Desktop,并配置WSL 2功能。接着,详细说明了如何获取Dify源代码,并通过Docker Compose启动服务。文章还提供了高级配置指南,包括如何配置大语言模型和更新Dify版本。最后,针对Docker镜像拉取失败等常见问题,提供了详细的诊断和解决方案。通过本文,

jacky_zhuyuanlu的博客 1万+

Spring Boot 中 Validation 数据校验依赖作用详解

Spring Boot Validation 依赖的作用可以概括为:声明式校验:通过注解简化代码,使校验规则清晰直观。提高开发效率:省去大量手写校验代码的时间。提升代码可维护性:校验逻辑与业务逻辑分离,代码更整洁。保证数据安全与正确性:在数据进入业务逻辑之前就将其拦截,防止“垃圾进,垃圾出”。标准化:遵循 Java Bean Validation 标准,技术通用,易于理解。友好的错误反馈:与异常处理机制无缝集成,提供统一的错误响应格式。

BillKu的博客 586

【DRAM存储器六十九】DDR5介绍--2N mode 和 CS Geardown mode

摘要: DDR5内存速率提升至8400MT/s以上时,信号完整性成为关键挑战。JEDEC在JESD79-5B标准中引入2N Mode和CS Geardown Mode两项技术,通过“时间换稳定性”优化时序裕量。2N Mode默认启用,将命令周期延长至两倍时钟周期,增强全局命令稳定性;CS Geardown Mode则针对片选信号(CS_n)降低采样频率,提升局部信号容错能力。两者均需通过特定寄存器配置,适用于高频场景下的性能与稳定性平衡。这些技术为DDR5在高频运行中提供了可靠的时序保障。

highman110的博客 214

Matlab安装硬件支持包、simulink离线安装硬件支持包安装,离线安装ESP32、stm32等安装包,Are you up-to-date on SoftWare Maintenance?

注意:如果提示出现“没有可从此位置安装的兼容支持包后,这个问题,请查看步骤5,是不是没有按照步骤5进行操作.一般情况下出现“没有可从此位置安装的兼容支持包”后,重新安装选择了默认路径就可以成功。如果不是很清楚,直接安装在默认的文件夹下面,即使这个文件夹下没有matlab相关的文件夹,也要这么下载,没有为什么,切记尽量按默认路径安装,更改下载的路径不成功,别怪我没提醒。:下载到哪里非常重要,如果下载的不是默认的路径下,就需要将其中这个的是这个archives文件夹,连同其他文件一并要复制出来,拷贝到。

pvmsmfchcs的博客 1744

Java程序设计:spring boot(14)——数据校验 - Validation

⽇常项⽬开发中,对于前端提交的表单,后台接⼝接收到表单数据后,为了程序的严谨性,通常后端 会加⼊业务参数的合法校验操作来避免程序的⾮技术性 bug,这⾥对于客户端提交的数据校验, SpringBoot 通过 spring-boot-starter-validation 模块包含了数据校验的⼯作。这⾥主要介绍 Spring Boot 中对请求数据进⾏校验,相关概念如下。

茜茜西西的博客 541

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理

本文介绍了在spring boot框架下,使用validation数据校验注解,针对不同请求链接的前端传参数据,进行分层视图对象的校验,并通过配置全局异常处理器捕获传参校验失败异常,自动返回校验出错的异常数据。

weixin_71894495的博客 1454

【YOLO】Mask Proto分支理解

Mask Proto分支通过解耦全局原型与实例参数,在保持YOLO实时性的同时实现精准分割。其技术核心在于利用多尺度特征生成可组合的原型,结合动态系数适应不同目标形态。未来可进一步融合Transformer的注意力机制,增强对复杂场景的建模能力。

浩瀚之水的专栏 475

60、磁悬浮主动隔振系统的LQR控制研究

本研究针对磁悬浮主动隔振系统,提出了一种结合ANN建模、LQR控制与MPGA优化的综合控制方案。通过建立系统的动力学与状态空间模型,利用混合训练算法的ANN精确描述MSVI的非线性和滞后特性,并设计基于最小力传递率的LQR控制器。为优化LQR的Q和R矩阵,引入多群体遗传算法(MPGA),有效克服传统GA的早熟收敛问题,提升搜索效率与控制性能。仿真结果表明,在单频、扫频、随机及冲击激励下,该方法显著降低传递力幅值,隔振效果远优于被动系统。研究验证了所提方法的有效性,为磁悬浮隔振技术的实际应用奠定了基础,并展望

linux6sysadmin的博客 121

Spring Boot 使用validation通过注解实现数据校验

一、依赖 <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

杰森写代码 645

46.qt quick-自定义非常好看的qml虚拟软键盘-支持换肤、动态加载移除语言(二)

在上章我们学习了45.qt quick-qml虚拟软键盘详解(一)_诺谦的博客-优快云博客 接下来我们便来自定义一款好看的qml软键盘.如下图所示: 支持背景更换、支持动图: 支持动态加载移除语言: 支持拖拽、自由缩小放大: 支持定位坐标: ...

抵抗时间扭曲,坚持做一件有意义的事 4674

Spring Boot:Spring Validation数据校验

一:前言 SpringValidation是对hibernate validation的二次封装,添加自动校验的功能,并将校验结果封装到特定的结果类中。 hibernate validation是校验框架,是JSR303标准的实践结果。 引入hibernate validatior:导入spring-boot-starter-web依赖即可,已经包括所需jar包。 <depend...

记录,记录,记录 632

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring Boot 整合 Bean Validation 校验数据

bean-validation Spring Boot中Bean的数据校验示例。 Bean Validation 官方:beanvalidation.org hibernate validator 官方:hibernate.org/validator/ 介绍 spring-boot-starter-validation是Spring Boot对hibernate validator整合。 hibernate validator是 Bean Validation 的具体实现,它提供了一套比较完善、便捷的验证实

wangzhihao的博客 1556

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Spring Boot数据校验validation实战:写少一半代码,还更优雅!

在我们日常开发中,后端经常需要对请求参数进行校验。比如注册用户时,用户名不能为空、密码长度要在 6~16 之间、邮箱必须符合格式等等,如果我们不做校验,脏数据就可能进入数据库,造成业务问题;如果校验方式不合理,代码又会变得臃肿

Micro麦可乐的博客 5489

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

spring boot输入数据校验(validation)

Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2...

abcd4491的博客 136

spring-boot-starter-validation数据校验全局异常拦截处理

继承RuntimeException,要知道,spring 对于 RuntimeException 异常才会进行事务回滚,所以要继承RuntimeException。} }ValidationExceptionHandle:校验异常统一拦截返回,定义在最前面OtherExceptionHandle:其他异常拦截,用于项目中其他异常的拦截返回FinalExceptionHandle:最终异常拦截,最后一道防线。@RestControllerAdvice是帮助我们把信息转成json格式返回。

tangyb828的博客 1万+

解析Java中的数据校验:从Bean Validation到Spring Boot集成

Bean Validation API,作为Java EE和Java SE的一部分,为Java对象的属性验证提供了一个标准化的解决方案。它的核心优势在于能够以一种声明式的方式定义属性约束,从而简化了数据验证的实现。注解驱动:Bean Validation API引入了一系列注解,如@NotNull@Size@Email等,可以直接应用于Java类的属性上,声明该属性应遵循的约束条件。集成广泛。

m0_64516972的博客 1282
上一篇: java 实现进一(有余数就进一)和舍余(去掉余数)
下一篇: swagger3 不能传header未解之谜
天天
博客等级 码龄21年 219粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值