Spring boot 参数校验
2019独角兽企业重金招聘Python工程师标准>>>
转载 http://www.cnblogs.com/bianzy/p/6639799.html
SpringBoot在内部通过集成hibernate-validation 已经实现了JSR-349验证规范接口,在SpringBoot项目中只要直接使用就行了。
一般用在Controller中用于验证前端传来的参数。
验证分两种:对封装的Bean进行验证 或者 对方法简单参数的验证
一、进行BeanValidate
1.定义Bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
2.使用
1 2 3 4 5 6 |
|
3.注意
@Valid 和 BindingResult 是一一对应的,如果有多个@Valid,那么每个@Valid后面跟着的BindingResult就是这个@Valid的验证结果,顺序不能乱
4.Api
@Null 只能是null
@NotNull 不能为null 注意用在基本类型上无效,基本类型有默认初始值
@AssertFalse 必须为false
@AssertTrue 必须是true
字符串/数组/集合检查:(字符串本身就是个数组)
@Pattern(regexp="reg") 验证字符串满足正则
@Size(max, min) 验证字符串、数组、集合长度范围
@NotEmpty 验证字符串不为空或者null
@NotBlank 验证字符串不为null或者trim()后不为空
数值检查:同时能验证一个字符串是否是满足限制的数字的字符串
@Max 规定值得上限int
@Min 规定值得下限
@DecimalMax("10.8") 以传入字符串构建一个BigDecimal,规定值要小于这个值
@DecimalMin 可以用来限制浮点数大小
@Digits(int1, int2) 限制一个小数,整数精度小于int1;小数部分精度小于int2
@Digits 无参数,验证字符串是否合法
@Range(min=long1,max=long2) 检查数字是否在范围之间
这些都包括边界值
日期检查:Date/Calendar
@Post 限定一个日期,日期必须是过去的日期
@Future 限定一个日期,日期必须是未来的日期
其他验证:
@Vaild 递归验证,用于对象、数组和集合,会对对象的元素、数组的元素进行一一校验
@Email 用于验证一个字符串是否是一个合法的右键地址,空字符串或null算验证通过
@URL(protocol=,host=,port=,regexp=,flags=) 用于校验一个字符串是否是合法URL
二、进行MethodValidate
1.注入MethodValidationPostProcessor Bean
1 2 3 4 |
|
2.在要MethodValidate的类上加上注解@Validated
3.在方法中使用
1 2 3 4 5 6 7 8 9 10 |
|
4.处理校验失败
默认校验失败后会让方法抛出Unchecked Exception,在springboot中默认是会让其跳转到error页面,所以只要添加一个这个异常的处理器就行:
1 2 3 4 5 6 7 8 9 10 |
|
5.注意
如果使用了@Validated,那么BeanValidate也会抛出异常而不是之前的封装在BindingResult中
三、自定义异常处理
用到再查,网上很多例子
四、
验证其实基于spring AOP ,所以其实任何Spring Bean都能利用这些注解做验证,比如Service层。但用的最多的还是Controller层
转载于:https://my.oschina.net/chen1988/blog/1511992
Spring boot 参数校验相关推荐
- Spring Boot参数校验以及分组校验的使用
简介:做web开发基本上每个接口都要对参数进行校验,如果参数比较少,还比较容易处理,一但参数比较多了的话代码中就会出现大量的if-else语句.虽然这种方式简单直接,但会大大降低开发效率和代码可读性. ...
- 参数幂等性校验失败_快速入手 Spring Boot 参数校验
1.背景介绍 2.Spring Boot文档中的Validation 3.Hibernate Validator 4.Spring Validator 5.示例 6.补充 <Netty 实现原理 ...
- spring boot参数校验 告别校验胶水代码
springboot进行参数校验 文章目录 前言 普通的逻辑代码校验 PathVariable 路径变量校验 JSR规范是什么? springboot-JSR303参数校验 引入参数校验依赖 官网 ...
- @valid 校验_一文带你快速入手 Spring Boot 参数校验
点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 作者:狂乱的贵公子 来源: ...
- Spring Boot参数校验
1. 概述 作为接口服务提供方,非常有必要在项目中加入参数校验,比如字段非空,字段长度限制,邮箱格式验证等等,数据校验常用到概念: JSR303/JSR-349: JSR303是一项标准,只提供规范不 ...
- Spring MVC 参数校验
Spring 4 以上支持JSR303校验API.所以必须要Spring4. 我用Spring boot,所以引入 <dependency><groupId>org.sprin ...
- Spring Boot数据校验
数据校验是一个相当重要的环节,使用Spring Boot 进行数据校验. 添加校验依赖 全部依赖文件如下 <?xml version="1.0" encoding=" ...
- Spring请求参数校验
SpringMVC支持的数据校验是JSR303的标准,通过在bean的属性上打上@NotNull.@Max等进行验证.JSR303提供有很多annotation接口,而SpringMVC对于这些验证是 ...
- java 启动参数 别名,Spring boot 参数别名处理
背景 处理老系统时,前端请求的参数使用的蟒蛇式(如:create_time),而后端接收使用的是驼峰式(如createTime).我们想自动进行参数转换. Spring 提供的能力 @RequestP ...
最新文章
- 新手对于iPhone开发环境等入门问题解答汇总
- 声明式事务和编程式事务
- 单片机 PWM输出 c
- 热插拔服务器电源维修,无需关停系统即可热插拔,TE Connectivity推出滑轨电源连接器...
- sparkpython多线程_如何在PySpark(Spark流)中组合多个rdd?
- 安装.net Framework 3.5 SP1非常慢的解决方案
- [Flutter] 一些面试可能会问基础知识
- 数论基础及其代码实现
- 弧微分直角系最详细推导
- 信号隔离器的功能原理是什么?
- VMware桥接模式下虚拟机ping主机不通
- 蚂蚁金服智能推荐引擎解决方案与实践
- cocos恭喜喜庆粒子特效
- 欧阳的科研历程-1 目标
- iPhone像素点和常用控件尺寸
- 借Kinect 扫描 软件 reconstructMe skanect ksan3d
- CSP漫画工作室clipstudiopaint最新版本2022功能介绍
- 怎么能免费制作自己的微信小程序?
- Exception in thread “main“ java.time.DateTimeException: Unable to extract ZoneId from temporal
- spring中依赖注入方式总结
热门文章
- 独家 | 一文盘点AutoML 库
- 机器学习:循环神经网络知识要点
- DeepMind网红博士300页论文出炉:面向NLP的神经迁移学习
- 管理到底是“管人”还是“管事”,百分之九十的人理解有问题
- 【Science】CMU机器学习系主任:八个关键标准判别深度学习任务成功与否
- 国内丨人工智能(AI)引发的中国经济新动能
- 有序回归(ordinal regression)
- 美国国家科学院发布:材料有哪些研究前沿?
- 下一次工业革命:计算生物学与生物平台
- 谷歌自动驾驶是个大坑,还好中国在构建自己的智能驾驶大系统