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
相关产品推荐
相关产品推荐

