Spring Boot 3添加OpenAPI依赖后出现NoProviderFoundException求助
解决Spring Boot 3中jakarta.validation.NoProviderFoundException异常
你遇到的这个异常核心原因很明确:jakarta.validation-api只是Jakarta Bean Validation的规范接口包,没有提供具体的实现逻辑。Hibernate Validator是Jakarta Bean Validation的官方参考实现,必须把它加入类路径,才能让Validation功能正常初始化。
解决方案一:使用Spring Boot官方Starter(推荐)
直接移除你手动添加的jakarta.validation-api依赖,改用Spring Boot提供的spring-boot-starter-validation,它会自动帮你管理jakarta.validation-api和hibernate-validator的版本,避免版本冲突:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
解决方案二:手动添加Hibernate Validator实现
如果你不想用Starter,也可以保留jakarta.validation-api,同时添加Hibernate Validator的依赖(注意版本要和Spring Boot 3适配,推荐使用和你的Hibernate Core匹配的版本,比如6.1.x系列):
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.7.Final</version> </dependency>
补充说明
之所以启动时触发这个异常,是因为你的项目里引入了spring-boot-starter-data-jpa(包含Hibernate Core),Hibernate会自动尝试初始化Bean Validation组件;同时springdoc-openapi也会用到Validation相关逻辑,两者都会触发对Bean Validation实现类的查找,而你只加了规范包没加实现,所以抛出了找不到Provider的异常。
内容的提问来源于stack exchange,提问作者GuptaSubham
相关产品推荐
相关产品推荐

