数据校验的总结

业务层进行复杂检查

简单校验交给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的属性里指定不同的验证组即可。

相关推荐
SL_staff2 分钟前
JVS-Rules vs Drools:金融风控团队为何转向业务可编辑的决策平台
java·spring cloud·github
Zhou1411363 分钟前
SpringMVC_03_进阶功能
java
咖啡八杯8 分钟前
常量与枚举设计规范:HttpStatus 自定义 601 警告码
java·架构·代码规范
ThinkerQAQ_8 分钟前
并发编程(六):Atomic 的实现——从 Runtime 到 CPU
java·go·picasso
小白的码BUG之路13 分钟前
Docker -- 基本命令
java·docker·eureka
后端LV13 分钟前
把限流从「注解」做活:RateLimitKeyResolver 四种真实业务的键玩法
java·后端
geovindu21 分钟前
rust: tree
开发语言·后端·rust
程序员老陆24 分钟前
C++ 继承方式:公有、保护、私有,到底在控制什么
开发语言·c++
imDwAaY24 分钟前
Bean的生命周期
java·笔记·后端·学习·spring·dubbo
不停喝水25 分钟前
【前端转全栈java速通课】 项目实战④-1 Spring Boot 创建项目-定义接口-请求参数处理-分层规范-依赖注入
java·前端·spring boot