数据校验的总结

业务层进行复杂检查

简单校验交给Controller校验,能流到业务的层的数据就是基本合法

引入依赖:spring-boot-starter-validation

能标注的所有注解在这两个地方看

jakarta.validation.constraints、

org.hibernate.validator.constraints

使用步骤:先在dto实体类,给各个属性标记上注解@Email

然后在Controller的参数上放上@Valid或@Validated(更推荐,因为Validated多了分组校验)

这样做完之后就可以完成校验,但是还是不能返回前端message里的信息

所以可以在参数后面加一个BingdingResult,就可以返回更完整的校验信息。(如果想校验哪个参数,就在后面加BingdingResult,而不是放最后)。

如果开启了BingdingResult。一旦写了BingdingResult就会封装在BingdingResult中不会抛出异常,前端就不会看到错误,只会收到200。就需要手动处理校验错误

@Validated支持分组功能,对不同请求实现不同的验证逻辑。

实现的话就是定义不同的接口,也就是不同的分组。然后在@Validated的属性里指定不同的验证组即可。

相关推荐
java1234_小锋3 分钟前
说一下Spring的事务传播行为?
java·数据库·spring
庞轩px5 分钟前
第四篇:SpringBoot自动配置——约定大于配置的底层原理
java·spring boot·后端·spring·自动配置·注解开发
不知名的忻6 分钟前
Dijkstra算法(朴素版&堆优化版)
java·数据结构·算法··dijkstra算法
苏三说技术6 分钟前
美团二面:高并发下如何保证接口幂等性?
java·数据库
兩尛15 分钟前
c++知识点5
开发语言·c++
澈20718 分钟前
C++内存管理:new/delete与内存泄漏实战
开发语言·c++·内存分区
其实防守也摸鱼23 分钟前
VS code怎么使用 Conda 安装预编译包
开发语言·网络·c++·vscode·安全·web安全·conda
默子昂25 分钟前
langchain 基本使用
开发语言·python·langchain
yaoxin52112327 分钟前
402. Java 文件操作基础 - 读取二进制文件
java·开发语言·python
沐浴露z29 分钟前
面试官:静态变量与非静态成员变量的区别?别再死记硬背了!
java·jvm