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

SpringBoot自定义校验与javax.validation注解均不生效如何解决

问题根因及解决方法

1. 缺失校验实现依赖

你当前pom.xml中仅引入了校验接口包javax.validation:validation-api,没有对应的实现包。Spring Boot 2.3及以上版本中,spring-boot-starter-web不再默认集成校验组件,需要手动引入完整的校验启动器:
把pom中现有的javax.validation:validation-api依赖替换为:

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

这个启动器已经包含了校验API和Hibernate Validator实现,无需单独引入validation-api包。

2. 自定义校验逻辑写反

你当前CapacityValidator的isValid方法逻辑错误:校验方法返回true代表校验通过,你现有逻辑是当传入值大于9999时返回true,完全不符合需求。同时要补充空值判断避免空指针:

@Override
public boolean isValid(Float value, ConstraintValidatorContext constraintValidatorContext) {
    // 空值默认放行,如果需要非空可搭配@NotNull注解使用
    if (value == null) {
        return true;
    }
    return value <= MAX_CAPACITY_VALUE;
}

3. 确认注解包路径正确

检查控制器类上的@Validated注解导入的是org.springframework.validation.annotation.Validated,不要导错其他包下的同名注解。

以上修改完成后重启项目,所有javax.validation标准注解和你自定义的@Capacity注解都会正常触发校验。

内容的提问来源于stack exchange,提问作者Paweł Bocian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 18:33:00