
- 前言
- 一、hibernate-validator
- 二、全局异常拦截校验参数注解
- 1.@RequestBody
- 2.@RequestParam/@PathVariable
- 总结
前言
最近在写项目时要校验传过来的参数是否为空,手动判空很繁琐,所以使用注解判空,但默认的Exception异常拦截报错不准确,想要定义符合类型的报错返回值,所以查阅资料写了这篇博客
参考链接:
springboot2.3之后,hibernate-validator依赖缺失【踩坑】
Java注解校验参数 javax.validation 和 hibernate-validator(注解说明,全局异常处理)
Jakarta Bean Validation,Constrain once, validate everywhere!(javax和jakarta区别)
1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知
Bean Validation专栏
spring boot中使用Bean Validation做优雅的参数校验(注解说明,全局异常处理通用模板)
参数校验Jakarta Bean Validation学习
@Valid与@Validated区别
@Validated和@Valid的区别
Spring Validation最佳实践及其实现原理,参数校验没那么简单!(全局异常处理通用模板)
还在为参数校验发愁?spring-validation最佳实践指南(重要,全局异常处理通用模板)
理解java注解二
注解专栏
@NotBlank、@NotNull验空注解无效问题
一、hibernate-validator 不同版本的hibernate-validator的依赖也不尽相同
7.0.0之后:
7.0.0之前(不过其实6版本的最后一些版本已经是jakarta.validation-api依赖了):
POST、PUT请求一般会使用requestBody传递参数,这种情况下,后端使用DTO对象进行接收。只要给DTO对象加上@Validated注解就能实现自动参数校验。比如,有一个保存User的接口,要求userName长度是2-10,account和password字段长度是6-20。如果校验失败,会抛出MethodArgumentNotValidException异常,Spring默认会将其转为400(Bad Request)请求。
2.@RequestParam/@PathVariableGET请求一般会使用requestParam/PathVariable传参。如果参数比较多(比如超过6个),还是推荐使用DTO对象接收。否则,推荐将一个个参数平铺到方法入参中。在这种情况下,必须在Controller类上标注@Validated注解,并在入参上声明约束注解(如@Min等)。如果校验失败,会抛出ConstraintViolationException异常。代码示例如下:
总结欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)