springboot 使用 javax.validation 进行优雅的参数校验

更简洁的参数校验,使用 SpringBoot Validation 对参数进行校验 在实际开发中,我们可以使用 Spring Boot Validation 提供的注解进行参数校验,提高代码的可读性,避免编写大量的if-else代码块和重复的校验语句。 阅读详情

1.引入依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

springboot 集成的 web模块依赖默认集成了validation的包。

2.实体类上加入对应注解以及 错误描述,常用注解如下

注解描述
@AssertFalse被注释的元素必须为 false
@AssertTrue同@AssertFalse
@DecimalMax被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin同DecimalMax
@Digits被注释的元素是数字
@Future将来的日期
@Max被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Min被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@NotNull不能是Null
@Null元素是Null
@Past被注释的元素必须是一个过去的日期
@Pattern被注释的元素必须符合指定的正则表达式
@Szie被注释的元素

  常用字符串校验注解

@Email元素必须是格式良好的电子邮箱地址
@Length字符串的大小必须在指定的范围内,有min和max参数
@NotEmpty字符串的不能是空
@NotBlank字符串不能使空,但是与@NotEmpty不同的是尾随的空白被忽略
@URL    字符串必须是一个URL

3.实体类参考

@Data
@ToString
public class Item {

    @NotNull(message = "id不能为空")
    @Min(value = 1, message = "id必须为正整数")
    private Long id;

    // 用于强校验集合内部对象的属性,若无此注解,则不校验集合内部对象属性
    @Valid
    @NotNull(message = "props不能为空")
    @Size(min = 1, message = "至少要有一个属性")
    private List<Prop> props;


}



@Data
public class Prop {
    @NotNull(message = "pid不能为空")
    @Min(value = 1, message = "pid必须为正整数")
    private Long pid;

    @NotNull(message = "vid不能为空")
    @Min(value = 1, message = "vid必须为正整数")
    private Long vid;

    @NotBlank(message = "pidName不能为空")
    private String pidName;

    @NotBlank(message = "vidName不能为空")
    private String vidName;
}

4.控制层加入一个注解即可

@RestController
@RequestMapping("/test")
public class TestController {

    @RequestMapping("/test1")
    public Object test1(@RequestBody @Valid  Item item){

        return "success";
    }
}

 

5.增加全局异常处理  捕获 这个异常即可 MethodArgumentNotValidException  ,demo写的比较简单,可以用code、message区分,将错误信息写到messae并返回给前台。

@ExceptionHandler({MethodArgumentNotValidException.class})
    public String handleException(MethodArgumentNotValidException e) {

        return e.getBindingResult().getAllErrors().get(0).getDefaultMessage();
    }

6.测试如下

正常case

异常case:

Windows下飞桨PaddlePaddle 2.6.1 GPU版环境搭建全攻略(含CUDA 11.7配置避坑指南) 本文详细介绍了在Windows系统下搭建飞桨PaddlePaddle 2.6.1 GPU版环境的完整流程,特别针对CUDA 11.7和cuDNN的安装提供了避坑指南。从Anaconda环境配置、CUDA Toolkit安装到飞桨GPU版的验证,手把手帮助开发者高效完成深度学习环境搭建,解决常见问题并优化性能。 阅读详情

相关推荐

保姆级教程:手把手教你用Jacquard V2数据集训练机器人抓取模型(附完整代码)

本文提供了一份详细的保姆级教程,手把手教你使用Jacquard V2数据集训练机器人抓取模型。从环境配置、数据准备到模型架构设计、训练优化和实际部署,全程解析并附完整代码,帮助开发者快速掌握视觉抓取技术。

weixin_29031057的博客 315

Validation参数校验注解

注解 描述 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素必须为True @DecimalMax(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值 @DecimalMin(Value) 被注解的元素必须为一个数字,其值必须大于等于指定的最小值 @Digits(integer=, fraction=) 被注解的元素必须为一个数字,其值必须在可接受的范围内 @Future 被注解的元素必须是日期,必须是将来日...

骑个小蜗牛的博客 1万+

NVIDIA GPU任务调度全景:从Block分配到Warp发射

GPU并行计算的核心是任务调度,而CUDA kernel在GPU上的执行并非简单的一次性操作,而是经过从CPU命令队列到硬件前端,再到GigaThread引擎和Warp Scheduler的多层协同。理解这一过程,是性能优化的基础。Warp作为硬件调度的基本单位,其状态切换与延迟隐藏能力直接决定计算单元的利用率;而Occupancy作为衡量SM上活跃Warp池大小的指标,也并非越高越好,需要结合访存模式与资源占用综合判断。对于多任务并发场景,Stream优先级、计算抢占、MIG硬件隔离与MPS软件共享等机制

weixin_32612263的博客 270

Springboot使用validation验证参数之二

package com.example.springbootvalidation.configuration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.s...

码农的田园 1086

【S32K】S32K144入门笔记(4) Lin (Lin stack组件) 驱动超声波雷达实例

0. 引言 Lin这块是我一直没弄懂的部分。很多东西一知半解,当时感觉是硬凑了答案出来。 果然过标的时候出了问题,几个小伙伴帮忙一起刷夜也没搞定,好在标还是顺利过了,不然罪过大了。 之前做lin这块一直用的是linStack组件,这部分包含了协议栈部分,需要对lin的协议比较清楚和理解才好配置。 尤其是,图形界面配置完成后会生成一个ldf文件,这个文件很重要,所有的代码都是基于这个文件生成的,但是这个文件我确认没找到什么介绍资料,所以很多配置都是一点一点凑出来的,再实际验证的。 抓住这次写文档的机会,把当时

YoYo的桃子树 1万+

STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

薄膜压力传感器采集压力数据

XiaoCaiDaYong的博客 3万+

Java Validation 只能输入固定值(自定义校验注解、@Pattern)

typeMean只能输入字符串“typeMean只能输入字符串“@Pattern注解,只能校验。type只能输入数字。

木辰風的博客 6814

VSAN 虚拟机丢失排查与恢复完整方案

VSAN虚拟机(含vCenter)显示无效 检查存储状态:登录ESXi Host Client,确认VSAN存储是否挂载。 若未挂载,通过SSH执行 手动挂载。 验证文件存在:检查虚拟机文件是否完整。 解除文件锁定:删除残留的 .lck 文件 手动注册虚拟机:强制注册虚拟机配置文件。 检查VSAN健康:验证集群节点在线、磁盘组状态正常,并测试节点间网络。 修复元数据:针对损坏对象,谨慎执行修复。 终极恢复:若数据丢失,从备份还原或联系VMware支持,提交日志

sido777的博客 2687

Springboot @Validated注解详细说明

在Spring Boot中,@Validated注解用于验证请求参数。它可以应用在Controller类或方法上。

qq_48721706的博客 1万+

不用U盘也能装Ubuntu?手把手教你用EasyUEFI搞定双系统(附企业版资源)

本文详细介绍了无需U盘即可安装Ubuntu双系统的方法。通过使用EasyUEFI工具,在Windows环境下创建虚拟启动分区并配置UEFI引导,即可直接从硬盘启动Ubuntu安装程序。该方法特别适合开发者或技术爱好者快速搭建Linux开发环境,操作安全便捷,无需额外物理介质。

weixin_29215391的博客 287

从零开始讲DDR(5)——读懂Datasheet

对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。

apple_53311083的博客 5224

Java代码简洁-validation参数校验

validation参数校验

weixin_43994244的博客 9118

YOLOv5改进 | 低照度检测 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

本文给大家带来的2024.3月份最新改进机制,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络CPA-Enhancer通过引入链式思考提示机制,实现了对未知退化条件下图像的自适应增强。该方法的核心在于能够利用CoT提示对图像退化进行动态分析和适应,从而显著提升物体检测性能。

Snu77的博客 2224

Springboot入参校验实战:使用 javax.validation 优雅处理参数校验

Data@NotBlank(message = "用户名不能为空")@Size(min = 2, max = 20, message = "用户名长度必须在2-20个字符之间")@NotBlank(message = "密码不能为空")@Size(min = 6, max = 20, message = "密码长度必须在6-20个字符之间")@Email(message = "邮箱格式不正确")@NotBlank(message = "邮箱不能为空")

asdurt的博客 834

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

使用Validation自动化校验请求参数

请求参数校验是我们编程经常需要做的事情,但是每次都用if语句去判空会使代码显得很难看,有的小伙伴就使用javax.validation中的注解去校验参数,这样会使代码变得优雅。但是遇到一个问题就是每个接口中去校验参数又会出现很多的代码重复,能不能用一个好点的方法来避免这种重复的代码呢?本文给出了一种比较简洁,并且适用于spring框架的解决方案。 本文只简单描述实现思路及编码,具体原理请参见Sp...

500-Internal Server Error 2698

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

这么写参数校验(validator)就不会被劝退了~

原文链接:https://mp.weixin.qq.com/s/KphcNU4W54L20uluPLEgQA 很痛苦遇到大量的参数进行校验, 在业务中还要抛出异常或者不断的返回异常时的校验信息, 在代码中相当冗长, 充满了 if-else 这种校验代码, 今天我们就来学习 spring 的 javax.validation 注解式参数校验. 为什么要用 validator 1.javax.v...

a945919556的博客 655

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

这么写参数校验(validator)

很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,在代码中相当冗长, 充满了if-else这种校验代码,今天我们就来学习spring的javax.validation 注解式参数校验. 为什么要用validator 1.javax.validation的一系列注解可以帮我们完成参数校验,免去繁琐的串行校验 不然我们的代码就像下面这样: //http:...

KHOST的博客 899

SpringBoot使用validation-api实现参数校验

SpringBoot使用validation-api实现参数校验 前言 我们在开发Java项目的时候,经常需要对参数进行一些必填项、格式、长度等进行校验,如果手写代码对参数校验,每个接口会需要很多低级的代码,这样会降低代码的可读性。那么我们能不能使用一种比较优雅的方式来实现,对请求中的参数进行校验呢? knife4j的安装与使用可参考我的博客:SpringBoot使用knife4j进行在线接口调试 正文 ValidationApi框架就是用来解决参数校验中代码冗余问题,ValidationApi框架提供一些

蹊源的奇思妙想的博客 1万+

SpringBoot 使用注解进行接口参数校验

文章目录1. 基础简介2. 框架简介2.1. validation-api2.2. jakarta.validation-api2.3. hibernate-validator2.4. spring-boot-starter-validation3. 注解说明3.1. 标识注解3.2. 约束注解3.3. 提示信息4. 使用说明4.1. 一般性校验4.2. 自定义校验4.3. 分组校验4.4. 异常处理 本文需要结合SpringBoot 封装接口返回数据的统一结构部分代码。 本文需要结合SpringBoot

一线大码 6863

Springboot中如何优雅的进行字段校验

Springboot中如何优雅的进行字段校验

YIYIYI 1508

springboot使用Validation API和全局异常优雅的校验方法参数

目录 一、为什么使用 Validation 来验证参数 二、如何使用Validation相关注解进行参数校验 三、Validation类的相关注解及描述 四、使用 Validation API 进行参数效验步骤 五、 Spring Validation的三种校验方式 五、springboot项目中实战演练 补充:使用自定义参数注解 一、为什么使用 Validation 来验证参数 通常我们在使用spring框架编写接口时,对于部分接口的参数我们要进行判空或者格式校验来避免程序出现异常。那是我   们一般都是

Jay的博客 4697

springMVC 优雅的校验参数(@Valid和@Validated)

很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,在代码中相当冗长, 充满了if-else这种校验代码,今天我们就来学习spring的javax.validation 注解式参数校验. 为什么要用validator javax.validation的一系列注解可以帮我们完成参数校验,免去繁琐的串行校验 不然我们的代码就像下面这样: // http://loc...

ratel的博客 7286

Spring Boot 优雅参数校验(Bean Validation)

Bean Validation 是 Java 定义的一套基于注解的数据校验规范,Spring Boot 默认集成了 Hibernate Validator 作为其实现。通过在实体类的字段或方法参数上添加校验注解,我们可以优雅地实现参数校验,避免大量的 if-else 代码。

lzz的博客 1424

SpringBoot - 优雅的实现【业务校验】高级进阶

文章目录Pre需求实现三部曲实体类Step1 搞两个自定义注解Step2 搞自定义校验器Step3 搞验证小结源码 Pre SpringBoot - 优雅的实现【参数校验】高级进阶 SpringBoot - 优雅的实现【自定义参数校验】高级进阶 SpringBoot - 优雅的实现【参数分组校验】高级进阶 SpringBoot - 使用Assert校验让业务代码更简洁 在开发中,为了保证接口的稳定安全,一般需要在接口逻辑中进行校验,比如 上面几篇都是 【参数校验】,一般我们都是使用Bean Valida

小工匠 4万+

使用Hibernate Validation进行优雅的参数校验

使用Hibernate Validation进行优雅的参数校验 开发中,我们需要在controller,service等层对传来的参数进行校验判断。 比如判断参数是否为null,数字是否符合规定大小,字符串格式是否正确。 如果我们在每个controller里面都进行判断,即繁琐也容易失误。而Hibernate Validator校验框架可以帮我们从繁琐的参数校验中脱离出来,进行更有质量的开发。 H...

xizi1103的博客 599

spring-boot-starter-validation是什么&Validation参数校验使用概要

Valid 是 JSR303 声明的,JSR是Java Specification Requests的缩写,其中 JSR303 是JAVA EE 6 中的一项子规范,叫做 Bean Validation,为 JavaBean 验证定义了相应的元数据模型和 API,需要注意的是,JSR 只是一项标准,它规定了一些校验注解的规范,但没有实现,二者主要作用在于 都作为标准JSR-303规范,在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太多区别。

A-Itfuture的博客 2998
上一篇: oracle中字符串的操作
下一篇: 软件设计 五大基本原则
宁漂打工仔
博客等级 码龄9年 1万+粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

宁漂打工仔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值