Spring Boot 3 Native环境下Springdoc v2无法访问Swagger UI的问题
解决方案:Spring Boot 3 + Springdoc v2 原生镜像Swagger UI 404问题
原因分析
GraalVM原生镜像构建默认不会自动打包第三方库中的静态资源,Swagger UI的前端文件属于Springdoc依赖的静态资源,在原生镜像构建过程中未被正确包含,导致访问时返回404。
解决步骤
1. 配置GraalVM资源包含规则
在项目的src/main/resources/META-INF/native-image目录下创建native-image.properties文件,添加以下配置,确保Swagger UI相关静态资源被打包进原生镜像:
Args = -H:IncludeResources="swagger-ui.*|swagger-ui/.*|openapi.*"
2. 补充原生支持依赖(可选但推荐)
显式引入Springdoc的原生支持依赖,增强GraalVM对Springdoc组件的兼容性:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-native</artifactId> <version>2.0.0</version> <scope>runtime</scope> </dependency>
3. 重新构建并运行原生镜像
执行以下命令清理项目、构建原生镜像并启动:
./mvnw clean package -Pnative ./target/demo
完成后访问http://localhost:8080/swagger-ui/index.html,即可正常加载Swagger UI页面。
内容的提问来源于stack exchange,提问作者Sim
相关产品推荐
相关产品推荐

