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

Spring Boot 3.2.10+springdoc-openapi 2.2.0无法加载Swagger UI问题

升级Spring Boot 3.2.10与springdoc-openapi-starter-webflux-ui 2.2.0后Swagger UI无法加载

升级至Spring Boot 3.2.10和springdoc-openapi-starter-webflux-ui 2.2.0后,Swagger UI无法加载,抛出以下错误:

org.springframework.web.servlet.resource.NoResourceFoundException: No static resource swagger-ui/index.html.

所用配置

pom依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.10</version>
    <relativePath />
    <!-- lookup parent from repository -->
</parent>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
    <version>2.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Swagger配置类

@Configuration
public class SwaggerConfig {

    @Value("${Host:}")
    private String configUrl;

    @Bean
    public OpenAPI OpenApi() {
        Contact contact = new Contact();
        contact.setName("Team ");
        contact.setEmail("email.com");
        OpenAPI openAPI = new OpenAPI();
        if (StringUtils.isNotEmpty(configUrl)) {
            openAPI.addServersItem(
                    new Server().url(configUrl));
        }
        openAPI.info(new Info().title(" Scheduler API")
                .description("To schedulejobs").version("0.0.1-SNAPSHOT")
                .contact(contact)

        );

        return openAPI;
    }
}

解决方法

  • 核对依赖兼容性:Spring Boot 3.2.x需搭配适配的springdoc版本,2.2.0理论上兼容,但可尝试升级到2.3.0等最新兼容版本,排查依赖冲突。
  • 使用正确访问路径:Spring Boot 3.x + springdoc 2.x的Swagger UI默认路径为/swagger-ui.html,而非旧版的/swagger-ui/index.html,若自定义路径需在配置文件中指定:
    springdoc.swagger-ui.path=/swagger-ui.html
    
  • 恢复snakeyaml依赖:排除snakeyaml可能导致springdoc无法处理配置,若无其他依赖引入该包,可移除排除项,或手动添加兼容版本:
    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>2.2</version>
    </dependency>
    
  • 确保纯WebFlux环境:避免同时引入Spring MVC(spring-boot-starter-web)和WebFlux依赖,二者混合会引发资源处理冲突,需移除MVC依赖。
  • 放行静态资源:若自定义了资源处理器,需添加配置允许访问swagger-ui静态资源:
    @Configuration
    public class WebFluxConfig implements WebFluxConfigurer {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/swagger-ui/**")
                    .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/");
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:03:13