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

news/2024/4/21 0:33:47/

在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.ppmy.cn/news/1261958.html

相关文章

Java_LinkedList链表详解

目录 前言 ArrayList的缺陷 链表 链表的概念及结构 链表的种类 1.单向或双向 2.带头或不带头 3.循环或不循环 LinkedList的使用 什么是LinkedList LinkedList的使用 LinkedList的构造 LinkedList的其他常用方法介绍 LinkedList的遍历 ArrayList和LinkedList的…

小红书热门话题丨互动量暴涨两千万,年轻人流行做“公主”?

最近&#xff0c;网络热梗“公主请”在互联网上迅速走红。借助千瓜数据查询&#xff0c;近90天“公主请XX”相关笔记数在小红书达到12.22万&#xff0c;互动量达到2046万。 “公主请”这个梗的原型源自一部经典的老电影《罗马假日》。在这部电影中&#xff0c;格里高利派克饰演…

微软 Power Platform 零基础 Power Pages 网页搭建实际案例实践(三)

微软 Power Platform 零基础 Power Pages 网页搭建教程之案例实践学习&#xff08;三&#xff09;结合Power Apps和Power Automate Power Pages 实际案例学习 微软 Power Platform 零基础 Power Pages 网页搭建教程之案例实践学习&#xff08;三&#xff09;结合Power Apps和Po…

FindMy技术用于蓝牙耳机

蓝牙耳机是蓝牙技术的一个重要应用&#xff0c;它是一种免持耳机&#xff0c;可以让使用者轻松地进行通话和自由移动。蓝牙耳机采用蓝牙技术&#xff0c;通过无线方式连接手机和其他设备&#xff0c;因此使用者无需有线连接。使用蓝牙耳机&#xff0c;使用者可以在自由移动的同…

Fiddler抓包测试

模拟弱网测试 操作&#xff1a;一、Rules - Customize Rules &#xff08;快捷键CtrlR&#xff09;弹出编辑器 二、接着CtrlF查找m_SimulateModem标志位 三、默认上传300ms&#xff0c;下载150ms 四、更改后&#xff0c;继续Rules - Performances - Simulate Modem Speeds勾上 …

Stable Diffusion XL on diffusers

Stable Diffusion XL on diffusers 翻译自&#xff1a;https://huggingface.co/docs/diffusers/using-diffusers/sdxl v0.24.0 非逐字翻译 Stable Diffusion XL (SDXL) 是一个强大的图像生成模型&#xff0c;其在上一代 Stable Diffusion 的基础上主要做了如下优化&#xff1a;…

Java:SpringBoot中HttpServletRequest对象获取客户端的请求参数

文档 https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html 代码示例 package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;im…

泽攸科技二维材料转移台的应用场景及优势

随着二维材料的广泛研究和各种潜在应用的开发&#xff0c;对于二维材料样品的精密操控与转移的需求日益增加。特别是一些新型二维材料的制备和器件集成制备中&#xff0c;需要在显微镜下对样品进行观察与定位&#xff0c;并能够在微米甚至纳米量级上精确移動和转移样品。 传统…

参加百度Apollo技术沙龙—感受自动驾驶的魅力

2023年12月2日下午2点&#xff0c;我有幸参加了百度Apollo技术沙龙&#xff0c;这是一个围绕Apollo新版本Beta的全面升级展开的深度交流活动。作为一名工程师&#xff0c;我深感荣幸能够与众多同行和专家一同探讨自动驾驶技术的快速发展 在这次沙龙中&#xff0c;我了解到Apo…

敏捷开发方法

理解&#xff1a; 极限编程&#xff08;XP&#xff09;&#xff1a;敏捷开发的典型方法之一&#xff0c;是一种轻量级&#xff08;敏捷&#xff09;、高效&#xff0c;低风险、柔性、可预测的、科学的软件开发方法&#xff0c;它由价值观、原则、实践和行为4个部分组成。其中4大…

区块链实验室(28) - 拜占庭节点劫持区块链仿真

在以前的FISCO环境中仿真拜占庭节点攻击区块链网络。该环境共有100个节点&#xff0c;采用PBFT作为共识机制&#xff0c;节点编号分别为&#xff1a;Node0&#xff0c;Node&#xff0c;… &#xff0c;Node99。这100个节点的前2010区块完全相同&#xff0c;自区块2011开始分叉。…

学习Java第64天,请求转发和响应重定向

请求转发和响应重定向 概述 什么是请求转发和响应重定向 请求转发和响应重定向是web应用中间接访问项目资源的两种手段,也是Servlet控制页面跳转的两种手段 请求转发通过HttpServletRequest实现,响应重定向通过HttpServletResponse实现 请求转发生活举例: 张三找李四借钱,李四…

harmony开发之Text组件的使用

TextInput、TextArea是输入框组件&#xff0c;通常用于响应用户的输入操作&#xff0c;比如评论区的输入、聊天框的输入、表格的输入等&#xff0c;也可以结合其它组件构建功能页面&#xff0c;例如登录注册页面。 图片来源黑马程序员 Text组件的使用&#xff1a; 文本显示组…

python pandas dataframe常用数据处理总结

最近一直在做数据处理相关的工作&#xff0c;有几点经常遇到的情况总结如下&#xff1a; 数据中存在为空数据如何处理 处理方式1&#xff1a;丢弃数据行 # 实现方式1 data data.dropna(subset[id]) # 若id列中某行数值为空&#xff0c;丢弃整行数据 # 实现方式2 data df[df…

STM32-OLED显示屏

*本文采用的OLED显示屏为4针脚IIC显示屏&#xff0c;4针脚分别为GND&#xff0c;VCC&#xff0c;SCL&#xff0c;SDA OLED.C #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAc…

基于jsonrpc4j实现JSON-RPC over HTTP(服务端集成Spring Boot)

1.JSON-RPC说明 JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议。 它主要定义了一些数据结构及其相关的处理规则。 它运行时可以基于tcp(socket),http等不同的消息传输方式&#xff0c; 即它不关心底层传输方式的细节。 它使用JSON&#xff08;RFC 4627&#xff09;作为…

Echarts地图案例及常见问题

前言 ECharts 是一个使用 JavaScript 实现的开源可视化库,它可以帮助用户以简单的方式创建复杂的时间序列、条形图、饼图、地图等图形。 Echarts绘制地图的案例 展示了中国各省份的人口数量 var myChart = echarts.init(document.getElementById(main)); var option = {t…

圣诞树网页效果代码详解

以下是一个简单的HTML和CSS代码&#xff0c;可以创建一个类似于圣诞树的网页效果&#xff1a; <!DOCTYPE html> <html> <head><title>圣诞树网页</title><style>.tree {font-family: monospace;white-space: pre;font-size: 20px;margin:…

力扣150题 |80.删除有序数组中的重复项II

力扣150题 &#xff5c;80.删除有序数组中的重复项II 题目描述解题思路代码实现 题目描述 80.删除有序数组汇总的重复项II 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新…

智能优化算法应用:基于金枪鱼群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金枪鱼群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金枪鱼群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金枪鱼群算法4.实验参数设定5.算法结果6.参考…