Spring Boot集成Swagger-ui遇404及Bean创建失败问题求助
解决Swagger-ui.html 404及Bean创建错误问题
1. 清理依赖冲突,选准适配的Swagger实现
你同时混用了SpringDoc和SpringFox的依赖,二者是不同的Swagger实现,必然会引发冲突。建议二选一,优先使用SpringDoc(对新版本Spring Boot兼容性更好)。删除所有SpringFox相关依赖,只保留匹配你Spring Boot版本的SpringDoc依赖:
- 若使用Spring Boot 3.x,用以下依赖:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.0-M4</version> </dependency>
- 若使用Spring Boot 2.x,替换为:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.15</version> </dependency>
2. 移除错误注解
不要在主控制器类添加@EnableMvc和@Configuration!Spring Boot已默认完成Web MVC的自动配置,手动添加@EnableMvc会覆盖默认配置,直接导致DelegatingWebMvcConfiguration Bean的依赖注入错误,删掉这两个注解即可。
3. 注意访问路径差异
SpringDoc的默认访问路径和旧版SpringFox不同:
- Spring Boot 3.x + SpringDoc 2.x:访问
http://localhost:你的端口号/swagger-ui/index.html - Spring Boot 2.x + SpringDoc 1.x:访问
http://localhost:你的端口号/swagger-ui.html
4. 可选:添加基础配置确保API被扫描
如果仍无法访问,单独创建一个配置类,指定要扫描的API路径:
import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class OpenApiConfig { @Bean public GroupedOpenApi publicApi() { return GroupedOpenApi.builder() .group("public-api") .pathsToMatch("/**") .build(); } }
该配置类需单独存放,不要与主控制器类混写。
5. 检查自动配置是否被禁用
查看application.properties或application.yml中是否存在禁用SpringDoc自动配置的内容,比如:
spring.autoconfigure.exclude=org.springdoc.core.SpringDocConfiguration
若有则删除该配置项。
内容的提问来源于stack exchange,提问作者codelife
相关产品推荐
相关产品推荐

