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

Spring Boot 3.1.5升级至3.2.0后出现IllegalStateException: No target Validator set

Spring Boot 3.2.0响应式应用升级后"No target Validator set"异常解决

问题重现

将响应式Spring Boot应用从3.1.5升级到3.2.0后,出现如下异常:

java.lang.IllegalStateException: No target Validator set
    at org.springframework.util.Assert.state(Assert.java:76)
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.forExecutables(SpringValidatorAdapter.java:396)
    at org.springframework.validation.beanvalidation.MethodValidationAdapter.invokeValidatorForArguments(MethodValidationAdapter.java:257)
    at org.springframework.validation.beanvalidation.MethodValidationAdapter.validateArguments(MethodValidationAdapter.java:240)
    at org.springframework.web.method.annotation.HandlerMethodValidator.validateArguments(HandlerMethodValidator.java:115)
    at org.springframework.web.method.annotation.HandlerMethodValidator.applyArgumentValidation(HandlerMethodValidator.java:83)
    at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:164)
    ...

无其他代码变更,该异常在3.1.5版本中未出现。

问题原因

Spring Boot 3.2.0对依赖管理和方法校验逻辑做了调整:

  • spring-boot-starter-webflux不再默认包含spring-boot-starter-validation依赖,导致容器中缺少Validator相关Bean;
  • 方法校验的自动配置逻辑更严格,若容器中无可用的Validator实例,会直接抛出异常(3.1.5版本存在默认 fallback 逻辑)。

解决方案

1. 显式引入Validation Starter依赖

如果项目中没有明确添加validation依赖,需要在构建配置中引入:

Maven:

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

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-validation'

2. 显式配置Validator Bean(可选,若引入依赖后仍报错)

在配置类中定义LocalValidatorFactoryBean Bean,确保容器中存在可用的Validator实例:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

@Configuration
public class ValidatorConfig {

    @Bean
    public LocalValidatorFactoryBean validator() {
        return new LocalValidatorFactoryBean();
    }
}

3. 检查自定义方法校验配置

若项目中存在自定义的MethodValidationPostProcessor或相关校验配置,需确保其正确注入Validator实例:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;

@Configuration
public class MethodValidationConfig {

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor(LocalValidatorFactoryBean validator) {
        MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
        processor.setValidator(validator);
        return processor;
    }
}

验证

完成上述调整后,重启应用并触发之前报错的接口,异常应消失。

内容的提问来源于stack exchange,提问作者Honza Zidek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:43:29