Java注解校验参数及JSR-303,JSR-380区别

Java注解校验参数及JSR-303,JSR-380区别,第1张

文章目录
  • 前言
  • 一、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依赖了)
 

二、全局异常拦截校验参数注解 1.@RequestBody

POST、PUT请求一般会使用requestBody传递参数,这种情况下,后端使用DTO对象进行接收。只要给DTO对象加上@Validated注解就能实现自动参数校验。比如,有一个保存User的接口,要求userName长度是2-10,account和password字段长度是6-20。如果校验失败,会抛出MethodArgumentNotValidException异常,Spring默认会将其转为400(Bad Request)请求。

2.@RequestParam/@PathVariable

GET请求一般会使用requestParam/PathVariable传参。如果参数比较多(比如超过6个),还是推荐使用DTO对象接收。否则,推荐将一个个参数平铺到方法入参中。在这种情况下,必须在Controller类上标注@Validated注解,并在入参上声明约束注解(如@Min等)。如果校验失败,会抛出ConstraintViolationException异常。代码示例如下:

总结

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/869228.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存