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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:04:56