SpringBoot3集成springdoc启动报错:ObjectMapperProvider构造方法不存在
SpringBoot 3.0.3集成OpenApi 3启动失败问题解决
问题说明
在SpringBoot 3.0.3项目中引入springdoc-openapi-starter-webmvc-ui 2.0.4依赖后,启动应用时出现上下文初始化失败,抛出UnsatisfiedDependencyException,错误提示org.springdoc.core.providers.ObjectMapperProvider的构造方法void org.springdoc.core.providers.ObjectMapperProvider.<init>(org.springdoc.core.properties.SpringDocConfigProperties)不存在。经排查,类路径中同时存在springdoc-openapi-starter-common 2.1.0和springdoc-openapi-common 1.6.15两个版本的Jar包,版本不兼容导致该问题。
解决方案
- 统一springdoc依赖版本与类型:springdoc的starter系列(适配SpringBoot 3.x)和旧版非starter包(适配SpringBoot 2.x)API存在差异,必须统一使用同一系列且版本一致的依赖。
- 若使用Maven,在
springdoc-openapi-starter-webmvc-ui依赖中排除旧版springdoc-openapi-common:<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.4</version> <exclusions> <exclusion> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-common</artifactId> </exclusion> </exclusions> </dependency> - 删除项目中直接引入的
springdoc-openapi-common依赖,改用同版本的springdoc-openapi-starter-common:<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-common</artifactId> <version>2.0.4</version> </dependency>
- 若使用Maven,在
- 排查依赖传递:执行依赖分析命令确认版本一致性
- Maven:
mvn dependency:tree - Gradle:
./gradlew dependencies
从输出中检查所有springdoc相关依赖,确保没有混合不同系列或版本的包。
- Maven:
- 确认版本适配关系:SpringBoot 3.x必须搭配springdoc v2.x的starter系列依赖,v1.x的非starter包仅适配SpringBoot 2.x,两者核心类的构造方法等定义不同,是引发该错误的根本原因。
内容的提问来源于stack exchange,提问作者Deluxxx
相关产品推荐
相关产品推荐

