SpringBoot怎么使用validation做参数校验
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了SpringBoot怎么使用validation做参数校验的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么使用validation
千家信息网最后更新 2025年11月09日SpringBoot怎么使用validation做参数校验
这篇文章主要介绍了SpringBoot怎么使用validation做参数校验的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么使用validation做参数校验文章都会有所收获,下面我们一起来看看吧。
1.添加依赖
直接添加 hibernate-validator
org.hibernate.validator hibernate-validator 6.0.2.Final
添加spring-boot-starter-validation
org.springframework.boot spring-boot-starter-validation 1.4.0.RELEASE
添加spring-boot-starter-web
org.springframework.boot spring-boot-starter-web
2. 配置文件
如果想要设置fail_fast属性的话,true表示有一个参数出错即返回,默认的时检验所有的参数,那么必须要有配置文件
import org.hibernate.validator.HibernateValidator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import org.springframework.validation.beanvalidation.SpringValidatorAdapter;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.ValidatorFactory;/** * hibernate参数验证配置 */@Configurationpublic class ValidatorConfig extends WebMvcConfigurerAdapter { @Bean public Validator validator() { ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configure() // 将fail_fast设置为true即可,如果想验证全部,则设置为false或者取消配置即可 .failFast(true)// .addProperty("hibernate.validator.fail_fast", "true") .buildValidatorFactory(); return validatorFactory.getValidator(); } /** * requestParam方式的校验 * @return */ @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); methodValidationPostProcessor.setValidator(validator()); return methodValidationPostProcessor; } @Override public org.springframework.validation.Validator getValidator() { return new SpringValidatorAdapter(validator()); }}其中methodValidationPostProcessor是对requestParam起作用
继承WebMvcConfigurerAdapter 并且重写getValidator()方法,是让spring的请求校验Validator使用我们上边的validator,让设置的failFast生效,具体可参考org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#mvcValidator方法
3.统一异常处理
/** * hibernate-valid实体类形式接受参数验证失败 * @param ex * @return */ @ExceptionHandler(BindException.class) @ResponseBody public WebResult validationErrorHandler(BindException ex) { List collect = ex.getBindingResult().getAllErrors() .stream() .map(ObjectError::getDefaultMessage) .collect(Collectors.toList()); return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";")); } /** * hibernate-valid实体类形式接受参数验证失败 * @param ex * @return */ @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody public WebResult validationErrorHandler(MethodArgumentNotValidException ex) { List collect = ex.getBindingResult().getAllErrors() .stream() .map(ObjectError::getDefaultMessage) .collect(Collectors.toList()); return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";")); } /** * RequestParam方式参数校验 * @param ex * @return */ @ExceptionHandler(ConstraintViolationException.class) @ResponseBody public WebResult validationErrorHandler(ConstraintViolationException ex) { List errorInformation = ex.getConstraintViolations() .stream() .map(ConstraintViolation::getMessage) .collect(Collectors.toList()); return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(),StringUtils.join(errorInformation, ";")); } 4.使用
如果是
@RequestParam这样直接写参数校验的话,在类上或者对应方法上加上Validated注解,如果是实体类接受的话,在参数中的实体前加上@Valid即可
关于"SpringBoot怎么使用validation做参数校验"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"SpringBoot怎么使用validation做参数校验"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
参数
实体
配置
验证
方法
知识
内容
形式
文件
方式
篇文章
上边
价值
作用
属性
操作简单
文章
易懂
更多
注解
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发专业课程新闻
数据库 同步更新原理
网络安全三个组成
聊天消息数据库设计
数据处理有哪些服务器
金蝶服务器没有建立账号
精油研究的数据库
软件开发缴纳什么税种
南岸区工商软件开发服务特点
azure怎么查看服务器密码
ct6200华为管理服务器
数据库表中如何分区
csgo个人服务器换图
服务器托管天津虚拟主机
高级数据库技术与应用试题
实用电脑网络技术
深圳鑫捷讯网络技术有限公司
软件开发的人事叫什么
河北服务器机柜定做
天津云虚拟主机租用云服务器
科东网络安全监测装置连网线
网信网络安全注意事项
曙光服务器开机技巧
深入研究数据库
生存挑战服务器点错了咋办
为什么无限乱斗无法连接到服务器
陕西西安大唐网络技术有限公司
金融软件开发属于什么专业
沈阳政务软件开发多少钱
网络安全360奇安信