SpringBoot注解篇之@Validated

news2025/2/25 11:10:40

在这里插入图片描述

目录

  • 前言
  • @Validated作用
  • @NotNull与@NotBlank区别
  • 总结


前言

大家好,我是AK,在做新项目顺便整理SpringBoot相关内容,这里主要介绍下@Validated注解的应用,减少核心业务逻辑中一些参数判断的代码。


@Validated作用

@Validated 是 Spring Framework 中的一个注解,用于在方法或类级别上进行参数校验。

它的作用是校验方法参数或类中的字段的有效性,并能够结合 Spring Validation 框架来实现参数校验的功能。@Validated 注解可以应用于控制器层、服务层、持久层等不同的组件中。

下面是几个 @Validated 注解的使用方案:

方法参数校验:可以将 @Validated 注解应用于方法的参数上,以校验该参数的有效性。此时,需要结合其他参数校验注解(如 @NotNull、@NotBlank、@Size 等)一起使用。

public void saveUser(@Validated User user) {
    // 方法体
}

分组校验:通过指定校验分组,可以对不同的场景应用不同的校验规则。可以使用 @Validated 注解的 groups 属性来指定校验分组。

public void updateUser(@Validated({Group1.class, Group2.class}) User user) {
    // 方法体
}

类级别校验:可以将 @Validated 注解应用于类上,以校验类中的所有字段的有效性。此时,需要在字段上使用相应的参数校验注解。

@Validated
public class User {
    @NotNull
    private String username;
    
    @NotBlank
    private String password;
    
    // 其他字段及getter/setter
}

需要注意的是,@Validated 注解是 Spring Framework 提供的增强版验证注解,它与 JSR-303/JSR-349 中的 Bean Validation 规范相类似,但有一些不同之处。例如,Spring 的 @Validated 注解支持 Spring EL 表达式等高级功能。

总之,@Validated 注解是 Spring Framework 中用于参数校验的注解,可以应用于方法参数、类以及校验分组。它提供了一种方便的方式来实现参数校验,并能够与其他参数校验注解一起使用。

@NotNull与@NotBlank区别

@NotBlank 和 @NotEmpty 是常用的参数校验注解,用于验证字符串字段或方法参数的非空性。它们之间的主要区别在于注解的行为和适用的场景:

@NotBlank 注解:

@NotBlank 注解来自于 Hibernate Validator,它验证一个字符串字段或方法参数是否非空,并且不能只包含空格字符。这意味着字符串不能为 null,长度必须大于零,并且不能只包含空格字符。
@NotBlank 注解只适用于字符串类型,不能用于其他类型。
示例用法:@NotBlank String name;

@NotEmpty 注解:

@NotEmpty 注解来自于 JSR-303/JSR-349 Bean Validation 规范,它验证一个字段或方法参数是否非空,适用于字符串、集合、数组和 Map 等类型的字段和参数。
@NotEmpty 注解要求字段或参数不能为 null,并且其长度或大小不能为零。
示例用法:
字符串:@NotEmpty String name;
集合、数组或 Map:@NotEmpty List list;
总结:

@NotBlank 主要用于验证字符串的非空性,且不能仅包含空格字符。
@NotEmpty 可用于字符串、集合、数组和 Map 等类型的非空性验证,要求字段或参数不能为 null,且长度或大小不能为零。 注解无法直接校验空串(空字符串)。它的主要作用是验证字段或方法参数是否为空,但它不对空字符串进行验证。

在选择使用时,要根据具体情况和需求来决定使用哪个注解,以确保合适的非空性验证。

如果您需要校验空串,可以使用 @NotBlank 注解。@NotBlank 注解在校验字符串非空的同时,也会检查字符串是否只包含空格字符。

示例用法:

@NotBlank
private String name;

另外,若需要校验空串的情况,也可以使用 @NotNull 注解来实现。@NotNull 用于验证字段或方法参数是否为 null,若要同时校验空串,可以配合使用 @Size(min = 1) 注解。

示例用法:

@NotNull
@Size(min = 1)
private String name;

请注意,在使用 @NotBlank 或 @NotNull 进行校验时,需要确保使用的校验实现支持这些注解。通常,使用引入了对应实现的验证框架(如 Hibernate Validator)会对这些注解提供支持。


总结

@NotBlank对字符串校验更严格,可以校验出仅有空格字符串;@NotEmpty不仅可以校验字符串(不能校验仅有空格字符串),还能校验集合。




                                                                                                         ---- 永不磨灭的番号:我是AK



在这里插入图片描述

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

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

相关文章

【算法-动态规划】零钱兑换问题-力扣 322

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

PACS外围硬件--九五小庞

1.串口脚踏本线序:白 4 红6 黑8 2.USB脚踏板(常用) USB脚踏设置软件下载地址https://pmo0158ab-pic2.ysjianzhan.cn/upload/FootSwitchSet20200820.rar 在按键处输入快捷键,写入就可以 3.视频采集卡(常用)…

angular项目指定端口,实现局域网内ip访问

直接修改package.json文件 "dev": "ng serve --host 0.0.0.0 --port 8080"终端运行npm run dev启动项目。 这里就指定了使用8080端口运行项目,同时局域网内的其他电脑可以通过访问运行项目主机的ip来访问项目 例如项目运行在ip地址为192.168.2…

SpringBoot篇之集成Mybatis-plus

目录 前言一、Mybatis-plus介绍1.1 官网 二、代码生成器总结 前言 大家好,我是AK,整理的SpringBoot集成Mybatis-plus以及代码生成器的使用,时间原因简单的整理下,有问题的可以评论区见或私信我。 一、Mybatis-plus介绍 1.1 官网…

Tomcat的安装和配置

一.Tomcat下载:去Tomcat官网地址 在左侧Download中选择你需要下载的版本,这里我选择Tomcat9 根据电脑系统是32位还是64位选择,这里我选择64-bit Windows zip,点击即可下载 下载后直接解压,这里我解压在E盘的computer…

互联网医院牌照|互联网医院牌照办理指南及材料

互联网医院牌照办理成为医疗行业的热门话题,而作为一家以创新为核心的企业,我们致力于为您揭开这个引人入胜的新领域。随着科技的迅速发展,互联网医院正成为医疗行业的一大趋势。互联网医院牌照,作为一种新型的医疗机构认证&#…

ChatGPT AIGC 制作大屏可视化分析案例

第一部分提示词prompt: 商品 价格 p1 13 p2 41 p3 42 p4 53 p5 19 p6 28 p7 92 p8 62 城市 销量 北京 69 上海 13 南京 18 武汉 66 成都 70 你现在是一名非常专业的数据分析师,请结合上述数据完成下列几件事情 1:第一部分数…

实验室超声波清洗器有哪些特点?

随着科技的飞速发展,各种技术领域相互渗透,超声技术已广泛应用于工程、机械、电子、化工、生物、医疗等诸多行业,并且在日常生活中也扮演着不可或缺的角色。实验室超声波清洗器作为一种高效的清洁设备,具有以下特点: 首…

Qt应用开发(基础篇)——树结构视图 QTreeView

一、前言 QTreeView类继承于QAbstractItemView类,提供了一个树结构视图的模型。 视图基类 QAbstractItemView QTreeView默认为Model/View实现,下面是一个使用QFileSystemModel和QTreeView的结合,显示系统文件结构的实例。 QFileSystemModel …

深度学习基础知识 给模型的不同层 设置不同学习率

深度学习基础知识 给模型的不同层 设置不同学习率 1、使用预训练模型时,可能需要将2、学习率设置方式: 1、使用预训练模型时,可能需要将 (1)预训练好的 backbone 的 参数学习率设置为较小值, (2…

BI工具:让数据分析井然有序一望而知

BI(Business Intelligence)工具是一类专门用于数据分析和决策支持的软件工具。 它们能够将企业内部和外部的数据进行整合、处理和可视化,帮助用户从海量数据中获取有价值的见解和洞察,并以直观、易懂的方式展示给决策者和相关人员…

解决uniapp里scroll-view横向滚动的问题

一、前言 本以为是一件很简单的事,结果浪费了整整一个上午,并且问题并没有全部解决....后来没办法,用了touchmove模拟的滑动,如果有好的解决方法麻烦告诉我...非常感谢~ 一、问题 其实我想要实现的功能很简单,就是一…

Dubbo—Admin 整体架构与安装步骤

​回顾 Dubbo 服务治理体系的总体架构,Admin 是服务治理控制面中的一个核心组件,负责微服务集群的服务治理、可视化展示等。 Admin 部署架构 总体上来说,Admin 部署架构分为以下几个部分: Admin 主进程,包括服务发现…

表单规定输入域的选项列表(html5新元素)

datalist datalist 元素规定输入域的选项列表。 datalist属性规定 form 或 input 域应该拥有自动完成功能。当用户在自动完成域中开始输入时,浏览器应该在该域中显示填写的选项: 使用 input元素的列表属性与datalist元素绑定. 还有一定的搜索能力&…

c++视觉检测-----角点检测

角点检测:cornerHarris() cornerHarris()函数是OpenCV中用于执行Harris角点检测的函数。Harris角点检测是一种用于检测图像中角点的技术,通常用于特征检测和图像匹配。以下是cornerHarris()函数的用法: void cornerHarris(InputArray src, …

数据库基础篇一

MySQL数据模型 关系型数据库通过表来存储数据的数据库 SQL分类 数据库操作 进入数据库 mysql -u root -p #输入密码即可在cmd命令行窗口使用mysql 1.查询 2.创建 create database test; create database if not exists test; #如果test数据库不存在,则创建tes…

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)

目录 Bootstrap之Modal: 显示和隐藏方法 通过自定义属性: 使用JS来控制弹框: Bootstrap之Toast: 接口文档一些用法: 删除图书: 图片上传: 图片上传步骤: 修改头像&#xf…

Kopler.gl笔记:可视化功能总览

1 添加数据 2 添加图层 打开“数据层”菜单,开始可视化。 层(Layers)简单来说就是可以相互叠加的数据可视化。 3 添加过滤器 在地图上添加过滤器以限制显示的数据。过滤器必须基于数据集中的列。要创建新的过滤器,打开“过滤器…

【OpenCV-PyQt5-PyGame-imutils】探索Python中的图像和视频捕获:性能分析与选择指南

前言 随着计算机视觉和多媒体应用的不断发展,图像和视频捕获变得越来越重要。在Python中,有多种库和工具可供选择,用于打开摄像头、捕获图像、以及处理视频流。本文旨在为读者提供对这些捕获方法的全面了解,并介绍如何计算平均帧…

堆专题2 向上调整构建大顶堆

题目: 样例: 输入 6 3 2 6 5 8 7 输出 8 6 7 2 5 3 思路: 向上调整,就是从叶子结点开始 往 根节点 往上面调整,操作与 向下调整 操作类似,只是不用判断左右孩子,由于我们是从叶子结点开始 往 …