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

调用Validator时抛出NoProviderFoundException问题求助

调用Validator时抛出NoProviderFoundException问题求助

大家好,我现在碰到一个Bean Validation相关的问题,卡了好一阵,想请教下各位大佬!

我的项目是用Spring Boot 2.7.7 + Gradle构建的,目前定义的依赖如下:

// Spring Boot
implementation group: "org.springframework.boot", name: "spring-boot-starter-actuator"
implementation group: "org.springframework.boot", name: "spring-boot-starter-validation"
implementation group: 'org.springframework.boot', name: 'spring-boot-autoconfigure'
implementation group: "org.springframework.boot", name: "spring-boot-starter-web"
implementation group: "org.springframework.boot", name: "spring-boot-starter-mail"

// Swagger/OpenAPI CodeGen
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.14'
implementation group: 'org.springdoc', name: 'springdoc-openapi-common', version: '1.6.14'
implementation group: "org.openapitools", name: "jackson-databind-nullable", version: "0.2.4"

compileOnly group: "org.projectlombok", name: "lombok"
annotationProcessor group: "org.springframework.boot", name: "spring-boot-configuration-processor"

// Utils
implementation 'commons-io:commons-io:2.8.0'

在我的Service里,我是这样实现校验逻辑的:

@Override
public List<MyObjectValue> getApplicationDetailFromSearch(@Valid MySearchModel mySearchModel) {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set<ConstraintViolation<MySearchModel>> violations = validator.validate(mySearchModel);
    if (!violations.isEmpty()) {
        throw new ConstraintViolationException(violations);
    }
    // 后续业务逻辑...
}

另外说明下,MySearchModel是一个record类,我给它加了自定义注解@MySearch,并且已经实现了对应的MySearchValidator校验器。

但是当代码执行到Validation.buildDefaultValidatorFactory()这一行时,直接抛出了下面的异常:

javax.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:291) ~[jakarta.validation-api-2.0.2.jar:na]
    at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:103) ~[jakarta.validation-api-2.0.2.jar:na]
    // 后续栈信息省略...

我明明已经引入了spring-boot-starter-validation,按道理应该会自动引入Hibernate Validator才对,为什么还会报找不到Provider的错误呢?有没有同学遇到过类似的问题,或者能给我一些排查方向?

备注:内容来源于stack exchange,提问作者Andrej Flieger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:47:38