You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot starter validation参数校验不触发MethodArgumentNotValidException问题

问题根因

核心是依赖版本冲突:

  1. 父依赖Spring Boot 2.5.4 与手动指定的 spring-boot-starter-validation:2.4.2 版本不匹配
  2. 额外手动引入的validation-api、hibernate-validator、javax.el依赖和starter内置的依赖版本冲突,导致校验器没有正确初始化

修复步骤

1. 清理pom.xml的校验相关依赖

删除以下三个手动引入的依赖:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.13.Final</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.0</version>
</dependency>

同时去掉spring-boot-starter-validation的版本号,由父依赖统一管理版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. 刷新Maven依赖

清理Maven本地缓存,重新拉取依赖后重启项目即可。

可选适配(如果仍不生效)

如果清理后还是提示@Valid等注解不存在,检查IDE的Maven配置是否开启了「离线模式」,关闭离线模式重新同步即可。


验证效果

重新发送测试请求,会正常返回400错误,响应体示例如下:

{
    "name": "MethodArgumentNotValidException",
    "description": "Minimum 2 letters, max 50"
}

如果需要返回所有校验错误信息,调整全局异常处理器的逻辑遍历e.getBindingResult().getFieldErrors()拼接即可。


内容的提问来源于stack exchange,提问作者Sebastián Villegas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:36:01