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

Spring Framework 6(非Spring Boot)集成OpenAPI遇命名空间冲突求助

解决方案

1. 替换为支持Jakarta命名空间的springdoc版本

springdoc从2.0.0版本开始适配Jakarta EE 9+(完美匹配Spring Framework 6的命名空间要求),必须替换原1.7.0版本的依赖:

<!-- Maven依赖示例,可选用2.x系列最新稳定版,如2.5.0 -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>2.2.0</version>
</dependency>

Gradle或其他构建工具同步调整依赖版本,确保引入的springdoc组件完全基于Jakarta命名空间。

2. 手动配置SpringDoc核心组件(非Spring Boot环境)

因为没有Spring Boot的自动配置支持,需手动创建配置类注册核心Bean:

import org.springdoc.core.SpringDocConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;

@Configuration
public class SpringDocConfig implements WebMvcConfigurer {

    // 定义OpenAPI基础文档信息
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("项目REST API文档")
                        .version("1.0.0")
                        .description("基于Spring Framework 6的REST接口说明"));
    }

    // 注册SpringDoc核心配置器
    @Bean
    public SpringDocConfigurer springDocConfigurer() {
        return new SpringDocConfigurer();
    }

    // 配置Swagger UI静态资源访问规则
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/");
    }
}

3. 调整Swagger UI访问路径

springdoc 2.x版本的默认访问路径为 http://localhost:8080/rest/swagger-ui/index.html,或直接访问http://localhost:8080/rest/swagger-ui/会自动跳转至首页。若需自定义路径,可通过SpringDocConfigurer修改:

@Bean
public SpringDocConfigurer springDocConfigurer() {
    return new SpringDocConfigurer()
            .swaggerUiConfig(config -> config.path("/rest/custom-swagger-path"));
}

4. 确保依赖一致性

检查并替换项目中所有Servlet相关依赖为Jakarta版本,比如将javax.servlet-api替换为jakarta.servlet:jakarta.servlet-api:6.0.0及以上,彻底移除javax.*相关的Servlet依赖,避免命名空间冲突。

内容的提问来源于stack exchange,提问作者Akash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:53:18