Spring注解之@validated的使用

使用步骤

1.引入依赖

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

2.异常拦截类 

/*** 全局异常处理*/
@Slf4j
@RestControllerAdvice
public class GlobalExcepitonHandler {/*** 处理Assert的异常*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(value = IllegalArgumentException.class)public Result handler(IllegalArgumentException e) throws IOException {log.error("Assert异常:-------------->{}",e.getMessage());return Result.fail(e.getMessage());}/*** @Validated 校验错误异常处理*/@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(value = MethodArgumentNotValidException.class)public Result handler(MethodArgumentNotValidException e) throws IOException {log.error("运行时异常:-------------->",e);BindingResult bindingResult = e.getBindingResult();ObjectError objectError = bindingResult.getAllErrors().stream().findFirst().get();return Result.fail(objectError.getDefaultMessage());}@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(value = RuntimeException.class)public Result handler(RuntimeException e) throws IOException {log.error("运行时异常:-------------->",e);return Result.fail(e.getMessage());}
}

3.测试

 

@Data
public class LoginDto {@NotBlank(message = "账号不能为空")private String no;@NotBlank(message = "密码不能为空")private String password;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id;// 每一个注解都包含了message字段,用于校验失败时作为提示信息。不写message将使用默认的错误提示信息。@Size(min = 5, max = 10, message = "请输入5-10个字符的用户名")private String username;private String password;@Min(18)private Integer age;@NotBlank(message = "手机号码不能为空")@Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$", message = "手机号码格式错误")private String phone;@Email(message = "邮箱格式错误")private String email;@NotNull(message = "生日不能为空")@Past // 生日必须是一个过去的时间@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;}

 常用标签

常用三个标签的区别:@NotBlank,@NotNull,@NotEmpty
@NotEmpty用在集合类上面,不能为null,并且长度必须大于0

@NotBlank 用在String上面,只能作用在String上,不能为null,而且调用trim()后,长度必须大于0

@NotNull 用在基本类型上,不能为null,但可以为空字符串

其他数据校验注解

@Null   被注释的元素必须为 null    
@NotNull    被注释的元素必须不为 null    
@AssertTrue     被注释的元素必须为 true    
@AssertFalse    被注释的元素必须为 false    
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
@Past   被注释的元素必须是一个过去的日期    
@Future     被注释的元素必须是一个将来的日期    
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式    
// Hibernate Validator提供的校验注解:  
@NotBlank(message =)   验证字符串非null,且长度必须大于0    
@Email  被注释的元素必须是电子邮箱地址    
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
@NotEmpty   被注释的字符串的必须非空    
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内


 

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

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

相关文章

电视卡众说纷纭(二):2007年度市面常见电视卡软硬件性能

在查找VISTA MCE插件开发的过程中看到很多的是跟电视卡硬件相关的资料。看到最多的名词就是软压卡、硬压卡。一个好的软件开发人员不只是要了解软件的开发&#xff0c;对硬件的设施也应该有相关的了解。要不然就成了闭塞的书呆子。所以我整理了我看到的关于电视卡比较好帖子和文…

dasBlog-1.8.5223.1中文版

dasBlog-1.8.5223.1中文版 本版本的DasBlog是qihangnet基于dasBlog-1.8.5223.1原版做的本地化版本。安装提示&#xff1a;1、由于本系统是使用Asp.Net开发的&#xff0c;所以在安装前请确保您的服务器或者虚拟主机支持Asp.net&#xff1b;2、请确定您将要安装的目录&#xff0c…

关于Linux下ISE和vivado安装cable usb驱动的问题

由于先前安装Android Studio一直不成功&#xff0c;一气之下&#xff0c;本人重装了系统&#xff0c;导致之前装的驱动什么的都没有了&#xff0c;这时再安装vivado&#xff0c;检测不到驱动&#xff0c;这里介绍怎么安装cable usb的驱动&#xff0c;供参考。 要安装这个驱动&a…

如何用计算机观看电视节目,如何将计算机显示器变成电视以观看节目

2006-11-16 如何在计算机上观看电视&#xff1f;我喜欢NBA&#xff0c;我喜欢 对于初次接触电视卡的用户&#xff0c;安装和接收电视确实不是一件容易的事。为此&#xff0c;我们将以Winfast TV2000电视卡为例来说明此应用程序的具体步骤。实际上&#xff0c;不同品牌的电视卡使…

ElasticSearch(一)数据类型

ElasticSearch&#xff08;一&#xff09;数据类型 1.简述 Es数据类型分为基础数据类型和复杂类型数据&#xff0c;掌握ES数据类型才能进一步使用ES检索数据内容。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

无人驾驶领域的软件测试该如何开展?

无人驾驶汽车使用自主决策和控制系统&#xff0c;这种系统通常由多个软件和硬件组件组成。软件测试是必要的&#xff0c;因为它可以确保无人驾驶汽车的软件系统达到高度可靠性和安全性&#xff0c;以及提高无人驾驶汽车的性能和可靠性。 因此无人驾驶汽车是一定要进行严格的软件…

手写数字识别之网络结构

目录 手写数字识别之网络结构 数据处理 经典的全连接神经网络 卷积神经网络 手写数字识别之网络结构 无论是牛顿第二定律任务&#xff0c;还是房价预测任务&#xff0c;输入特征和输出预测值之间的关系均可以使用“直线”刻画&#xff08;使用线性方程来表达&#xff09…

[牛客复盘] 牛客周赛 Round 9 20230827

[牛客复盘] 牛客周赛 Round 9 20230827 总结小美的外卖订单编号1. 题目描述2. 思路分析3. 代码实现 小美的加法1. 题目描述2. 思路分析3. 代码实现 小美的01串翻转1. 题目描述2. 思路分析3. 代码实现 小美的数组操作1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 又是…

数据分析基础-数据可视化学习笔记03-可视化的符号与表示-图形符号学

概念 图型符号学&#xff08;Cartographic Symbolization&#xff09;是地图学领域中的一个重要概念&#xff0c;涉及到如何使用不同的符号、颜色、图案和标记来在地图上表示地理信息和数据。图型符号学旨在传达地理信息&#xff0c;使得地图能够清晰、有效地传达各种空间数据…

DDT数据驱动测试

简单介绍 ​ DDT&#xff08;Date Driver Test&#xff09;&#xff0c;所谓数据驱动测试&#xff0c;简单来说就是由数据的改变从而驱动自动化测试的执行&#xff0c;最终引起测试结果的改变。通过使用数据驱动测试的方法&#xff0c;可以在需要验证多组数据测试场景中&#…

【80天学习完《深入理解计算机系统》】第十一天 3.5 过程(函数调用)

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

模板(二)

目录 非类型模板参数 引入 分类 使用typename的特殊情况 注意点 模板特化 引入 介绍 函数模板特化 使用 ​编辑 优点 类模板特化 全特化 偏特化 部分特化 特殊的特化 使用 分离编译 介绍 问题代码示例 代码 说明 预处理 编译 链接 类模板实例化…

期货量化软件:衡量指标信息

机器学习依靠数据训练来学习市场的一般行为&#xff0c;最终做出相当准确的预测。 所选学习算法必须遍历精心挑选的样本&#xff0c;以便提取有意义的信息。 许多人未能成功应用这些精密工具的原因是&#xff0c;大多数有意义的信息都隐藏在嘈杂的数据当中。 对于许多策略开发人…

期货量化交易软软件:怎样开发可以获利的交易策略

简介 通过技术分析开发成功交易策略的过程可以分为以下几步: ​ 编辑 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 在某个资产价格图表窗口上附加几个技术指标, 并识别出其中信号指标与市场关联的模式. 把上一步相关性分析取得的数据进行公式化. …

免费期货量化交易软件:种群优化算法引力搜索算法(GSA)

1. 概述 ​​​​​​​ 引力搜索算法&#xff08;GSA&#xff09;是由 E. Rashedi 提出的&#xff0c;用于解决优化问题&#xff0c;特别是非线性问题&#xff0c;它遵循牛顿的万有引力定律原理。 在所提议的算法中&#xff0c;粒子被视为物体&#xff0c;并在考虑其质量的情…

免费_期货量化软件:神经网络变得轻松-网络训练和测试

1. 定义问题 在开始创建智能交易系统之前&#xff0c;必须定义将为新神经网络设定的目标。 当然&#xff0c;金融市场上所有智能交易系统的共同目标是获利。 然而&#xff0c;此目的太笼统宽泛。 赫兹期货量化软件需要为神经网络指定更具体的任务。 甚至&#xff0c;我们需要了…

免费期货量化软件:多层感知器和反向传播算法

免费期货量化软件&#xff1a;多层感知器和反向传播算法 什么是 TensorFlow&#xff1f; TensorFlow 是一个快速数值处理的开源函数库。 它是由 Google 依照 Apache 开源许可下创建、支持和发布。 该 API 是为 Python 语言设计的&#xff0c;尽管它也可以访问基本的 C API。…

免费期货量化软件策略:艾伦·安德鲁斯和他的时间序列分析技术

我相信&#xff0c;所有现代图表分析应用程序都会包括 安德鲁草叉。 在高级系统中&#xff0c;在原本的三条主线中会添加一些额外的线&#xff08;例如&#xff0c;为了更方便&#xff0c;赫兹期货量化中加入了“侧边”等级&#xff09;。 一些开发人员在他们的程序中包括“希夫…

免费期货量化软件:数据科学与机器学习——线性回归

它是一个跨学科领域&#xff0c;它运用科学方法、流程、算法、系统&#xff0c;从嘈杂、结构化和非结构化数据中提取出知识和见解&#xff0c;并将这些知识和可操作的见解在广泛的应用领域加以运用。 数据科学家则是创建编程代码、并将其与统计学相结合&#xff0c;从中挖掘创…

免费期货量化软件策略:在一张图表上的多个指标为用户开发

通常&#xff0c;当我们开始实现一个新系统时&#xff0c;我们并不真正知道我们如何对其进行改进&#xff1b;故此&#xff0c;我们应该始终启动一个新项目&#xff0c;并着眼于未来进行改进。 这对那些刚开始的人来说非常重要&#xff1a;持续地规划一些事情&#xff0c;想象未…