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

Spring Boot 3整合Jakarta Validation:如何默认启用分组校验序列

Spring Boot 3整合Jakarta Validation:如何默认启用分组校验序列

我太懂你这种不想每次都手动指定校验分组的麻烦了——重复写validator.validate(data, AllValidations.class)确实啰嗦,咱们可以通过全局配置或者局部注解的方式,让Spring自动启用你的分组校验序列,不用每次都手动指定。

方法一:全局配置默认校验分组序列

Spring Boot默认使用LocalValidatorFactoryBean来处理Jakarta Validation,咱们可以自定义这个Bean,把默认的校验分组序列设置成你定义的AllValidations,这样整个应用里所有的默认校验都会自动遵循这个序列(先跑Default,再跑AfterDefaultValidations)。

代码示例如下:

import jakarta.validation.Validator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import java.util.Map;

@Configuration
public class ValidationConfig {

    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
        // 设置默认分组序列为你的AllValidations接口(注意要写全限定类名)
        factoryBean.setValidationPropertyMap(Map.of(
            "jakarta.validation.default-group-sequence", "com.yourpackage.AllValidations"
        ));
        return factoryBean;
    }
}

注意替换com.yourpackage.AllValidations为你实际的接口全限定名,这样不管是在Controller用@Valid,还是在Service用@Validated(不指定分组),都会自动按照你定义的序列执行校验。

方法二:局部指定(适合特定场景)

如果不想全局生效,只想在某个Controller或者Service里启用这个序列,可以直接在类上加上@Validated(AllValidations.class),这样该类下所有的@Valid校验都会自动使用这个分组序列:

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Validated(AllValidations.class)
public class MyController {

    @PostMapping("/submit")
    public void handleData(@RequestBody @Valid MyData data) {
        // 这里的校验会自动先执行Default分组,再执行AfterDefaultValidations分组
    }
}

这种方式适合只需要在特定模块生效的场景,不用改全局配置。

这样调整后,你就不用再每次手动调用validator.validate并指定分组了,Spring会自动帮你按序列执行校验,完美解决重复代码的问题~

备注:内容来源于stack exchange,提问作者Elias Schoof

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:03:01