Spring 6非Spring Boot项目集成springdoc-openapi-ui遇阻求助
解决Spring 6非Spring Boot项目集成SpringDoc的问题
问题根源
Spring 6已移除LocalVariableTableParameterNameDiscoverer类,替代类为DefaultParameterNameDiscoverer,你参考的SpringDoc v1版本文档基于Spring 5编写,因此出现兼容性报错。
正确集成步骤
1. 添加兼容Spring 6的SpringDoc依赖
使用SpringDoc 2.x及以上版本(该系列原生支持Spring 6),以Maven为例添加依赖:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-webmvc-core</artifactId> <version>2.2.0</version> <!-- 可替换为最新稳定版 --> </dependency> <!-- 可选:添加Swagger UI依赖,用于可视化API文档 --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>2.2.0</version> </dependency>
2. 调整SpringDoc配置类
将原配置中LocalVariableTableParameterNameDiscoverer的引用替换为DefaultParameterNameDiscoverer,示例配置类如下:
import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class OpenApiConfig implements WebMvcConfigurer { @Bean public GroupedOpenApi publicApi() { return GroupedOpenApi.builder() .group("public-api") .pathsToMatch("/**") .build(); } @Bean public org.springdoc.core.ParameterNameDiscovererConfiguration parameterNameDiscovererConfig() { org.springdoc.core.ParameterNameDiscovererConfiguration config = new org.springdoc.core.ParameterNameDiscovererConfiguration(); config.setParameterNameDiscoverer(new DefaultParameterNameDiscoverer()); return config; } // 配置Swagger UI资源访问(仅当添加UI依赖时需要) @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/"); } }
3. 确保配置类被Spring容器扫描
如果使用Java配置,需将上述OpenApiConfig类纳入Spring的组件扫描范围;若使用XML配置,需手动注册该类及相关Bean。
4. 验证集成结果
启动应用后,可通过以下地址验证:
- API文档JSON:
/v3/api-docs - Swagger UI界面:
/swagger-ui/index.html(仅添加UI依赖后可用)
额外注意事项
- 彻底移除所有SpringFox相关依赖,避免版本冲突。
- 确保项目中所有Spring核心依赖均升级至6.x版本,禁止混合Spring 5与Spring 6依赖。
内容的提问来源于stack exchange,提问作者Rushabh
相关产品推荐
相关产品推荐

