(企业 / 公司项目)SpringBoot3整合校验框架validation

在Spring Boot项目中使用校验框架validation可以让我们更方便地实现数据校验和错误提示。下面是Spring Boot集成校验框架validation的步骤。

        添加依赖

在项目的pom.xml文件中添加validation依赖:

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

        定义实体类

定义需要校验的实体类,并在属性上添加@NotBlank、@Max、@Min等校验注解。例如:

public class User {@NotBlank(message = "用户名不能为空")private String username;@NotBlank(message = "密码不能为空")private String password;@Max(value = 100, message = "年龄不能超过100岁")@Min(value = 0, message = "年龄不能小于0岁")private int age;// ... getter/setter
}

        编写校验逻辑

在Controller中编写校验逻辑,首先需要在方法入参中添加@Valid注解,触发校验。例如:

@RestController
public class UserController {@PostMapping("/user")public Result saveUser(@Valid @RequestBody User user) {// 保存用户信息// ...return Result.success();}// ...
}

        处理校验错误

在Controller中通过添加BindingResult类型的参数来获取校验结果,并进行错误处理。例如:

@RestController
public class UserController {@PostMapping("/user")public Result saveUser(@Valid @RequestBody User user, BindingResult bindingResult) {if (bindingResult.hasErrors()) {return Result.failure(bindingResult.getAllErrors().get(0).getDefaultMessage());}// 保存用户信息// ...return Result.success();}// ...
}

BindingResult中存储了所有的校验错误信息。我们可以通过getAllErrors()方法获取所有错误信息,然后根据需要进行处理。

        自定义校验注解

在实际开发中,我们可能需要定义自己的校验注解。这时需要定义注解和对应的校验器。例如,定义一个手机号码校验注解和对应的校验器:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {String message() default "手机号格式不正确";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}public class PhoneValidator implements ConstraintValidator<Phone, String> {private static final String REGEX_PHONE = "^1[3456789]\\d{9}$"; // 手机号正则表达式@Overridepublic void initialize(Phone phone) {}@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {if (StringUtils.isBlank(value)) {return true; // 忽略空值,由@NotBlank注解校验}return Pattern.matches(REGEX_PHONE, value);}
}

然后在实体类中使用该注解:

public class User {// ...@Phone(message = "手机号格式不正确")private String phone;// ... getter/setter
}

至此,Spring Boot集成校验框架validation的步骤介绍完毕。

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

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

相关文章

现代雷达车载应用——第2章 汽车雷达系统原理 2.5节 检测基础

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.5 检测基础 对于要测试目标是否存在的雷达测量&#xff0c;可以假定下列两个假设之一为真&#xff1a; •H0:—测量结果仅为噪声。 •H1:—测量是噪…

eNSP小实验(vlan和单臂路由)

一.vlan的划分 实验目的&#xff1a; ①pc1 只可以和pc2通信&#xff0c;不可以和pc3 pc4通信 ②pc1和pc2只能到Server1&#xff0c;pc3和pc4到Server2 1.拓扑图 2.配置 PC1-4 同理配置 SW1 <Huawei> <Huawei>u t m //关闭注释 Info: …

java项目将依赖打进jar、并生成可执行的jar

生成可执行的jar包 最近在做JAVA 的SDK 工具&#xff0c;由于SDK 依赖了其他的一些开源工具包&#xff0c;打包时少了依赖工具包&#xff0c;这样其他项目想要用SDK 就需要自己额外增加响应依赖&#xff0c;所以想要把依赖打进SDK。示例中依赖了fastjson处理json数据。 ​ 其…

网络编程案例

InetAddress 类 相关方法: getLocalHost&#xff1a;获取本机InetAddress对象。 getByName&#xff1a;根据指定主机名/域名获取ip地址对象。 getHostName&#xff1a;获取InetAddress对象的主机名。 getHostAddress&#xff1a;获取InetAddress对象的地址。 简单使用&am…

Nginx的location匹配和rewrite重写

一、location匹配 常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置 $ &#xff1a;匹配输入字符串的结束位置 * &#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”&#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll…

1.5万字 + 25张图盘点RocketMQ 11种消息类型,你知道几种?

本文是基于RocketMQ 4.9版本讲解 前置知识 为了帮助大家更好地理解这些消息底层的实现原理&#xff0c;这里我就通过三个问题来讲一讲RocketMQ最最基本的原理 1、生产者如何发送消息 在RocketMQ中有两个重要的角色 NameServer&#xff1a;就相当于一个注册中心 Broker&#xf…

批量生成标题文章:AI文章创作助力高效办公,提升办公效率

随着人工智能技术的不断发展&#xff0c;AI文章创作已经成为了高效办公的新趋势。这种技术可以快速生成高质量的文章&#xff0c;从而大大提高办公效率。相比传统的手写文章&#xff0c;AI文章创作具有更高的效率和准确性。在撰写文章时&#xff0c;往往要花费大量的时间和精力…

SpringBoot之视图渲染技术

前言 在Spring Boot中&#xff0c;视图渲染技术用于将动态数据渲染到用户界面&#xff0c;生成最终的HTML、XML、JSON等文档&#xff0c;以便将其返回给客户端浏览器 一.关于Freemarker 1.介绍 Freemarker是一个Java模板引擎&#xff0c;用于生成基于模板的动态内容。它是一…

有没有手机电脑同步的工作时间管理软件?

越来越多的职场人士感到每天的工作任务是比较多的&#xff0c;而工作时间又是有限的&#xff0c;所以经常时间不够用。因此&#xff0c;对于上班族来说&#xff0c;高效的时间管理是提高工作效率、按时完成任务的关键。为了满足这一需求&#xff0c;很多网友都在寻找一款既能在…

Python中的高阶函数白话

python中高阶函数的白话理解 首先,我们要明白函数在 Python 中就像一种特殊的东西&#xff0c;你可以把它们当作数据一样传递和处理。 现在&#xff0c;高阶函数其实就是能够接受函数作为参数&#xff0c;或者把函数作为结果返回的特殊函数。 1>传递函数作为参数&#xf…

Leetcode 139.单词拆分

OJ链接 &#xff1a;139.单词拆分 代码&#xff1a; class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> set new HashSet<String>(wordDict);int n s.length();boolean[] dp new boolean[n1];dp[0] true;//初始…

Ant中a-select 下拉选择内容过多,滚动条,滚动定位偏移

1.绑定值为null,默认选项&#xff0c;会出现滚动问题&#xff0c;定位偏移&#xff0c;ant官网解释如下 getPopupContainer菜单渲染父节点。默认渲染到 body 上&#xff0c;如果你遇到菜单滚动定位问题&#xff0c;试试修改为滚动的区域&#xff0c;并相对其定位。Function(tr…

SpringBoot整合Kafka (一)

&#x1f4d1;前言 本文主要讲了SpringBoot整合Kafka文章⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&#xff1a;努力一点&#xff0c;优秀一点 目录 文章目录 &…

【Python】计算最少排班人数(2)

接前一文章 部分关键代码及方法&#xff1a; 程序界面代码&#xff1a; winTk() win.config(bg#F2F2D7) win.geometry(550x440) win.title(最优排班计算器)frameFrame(win,width500,height60,bg#F2F2D7) frame.grid(row0,column0,columnspan5) l1Label(frame,text选择文件&a…

JetBrains2023年度报告,编程领域的风向标

前言 JetBrains是一家位于捷克的软件开发公司&#xff0c;有很多知名的开发IDE都是他们家的&#xff0c;比如IntelliJ IDEA、CLion、PyCharm、WebStorm等等&#xff0c;还有Kotlin编程语言也是JetBrains开发的&#xff0c;后来成为Android官方开发语言。 自2017年JetBrains发…

Linux C++快速入门

本文旨在以最小的篇幅&#xff0c;最少的信息&#xff0c;介绍最高频使用的内容&#xff0c;从而掌握C编程开发的能力。 这种能力&#xff0c;只是语法层面&#xff0c;不涉及具体的函数库&#xff0c;基础库等内容。 能力准备&#xff1a;需要C语言基础。基本的if else, whi…

JVM之jmap java内存映射工具

jmap java内存映射工具 1、jmap jdk安装后会自带一些小工具&#xff0c;jmap命令(Memory Map for Java)是其中之一。主要用于打印指定Java进程(或核 心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照&#xff0c;从而可以离…

[React]基于Antd的FormModal的组件封装以及useFormModal的hooks封装

[React]基于Antd的FormModal的组件封装以及useFormModal的hooks封装 场景 很常见&#xff0c;打开弹窗输入表单等… 封装后&#xff0c;弹窗自行挂载到body上&#xff0c;只需关注表达逻辑和打开关闭逻辑&#xff0c;其它的已经帮你管理好了 源码 import React, { useRef,…

使用 Timm 库替换 YOLOv8 主干网络 | 1000+ 主干融合YOLOv8

文章目录 前言版本差异说明替换方法parse_moedl( ) 方法_predict_once( ) 方法修改 yaml ,加载主干论文引用timm 是一个包含最先进计算机视觉模型、层、工具、优化器、调度器、数据加载器、数据增强和训练/评估脚本的库。 该库内置了 700 多个预训练模型,并且设计灵活易用。…

开发中需要防止用户哪些骚操作(测试鸭通关总结)

首先的话作为一个标准安全的后台认证和鉴权是一定要做好的&#xff0c;除此之外一下业务场景和常见问题也要进行考虑和预防。 一.收藏和点赞 网页前端和后端都要对点赞和收藏状态进行控制。简单说就是已经点赞和收藏的用户不能再进行点赞和收藏。 二.频繁请求某个接口 解决…