Spring Maven项目中Swagger UI不显示服务的问题求助
看起来你遇到的是Swagger UI加载后没有任何API文档显示的问题,结合你提到的Spring版本(7.0/6.2/6.3,应该对应Spring Boot 3.x系列),核心问题大概率是传统的Springfox Swagger2已经不再支持Jakarta EE规范(Spring Boot 3.x及以上基于Jakarta EE,而Springfox停留在javax.*时代)。下面给你分场景提供解决方案:
情况1:你使用的是Spring Boot 3.x(对应Spring Framework 6/7)
这时候必须替换为SpringDoc OpenAPI(目前维护的Swagger替代方案,完全支持Jakarta EE):
替换Maven依赖
移除所有springfox相关依赖,添加SpringDoc的starter到pom.xml:<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.3.0</version> <!-- 选择适配你Spring Boot版本的版本,比如2.3.x适配Spring Boot 3.2+ --> </dependency>简化配置类
删掉原来的@EnableSwagger2注解和旧的SwaggerConfig类——SpringDoc默认会自动扫描所有@RestController和@RequestMapping标注的接口。如果需要自定义API文档的标题、版本等信息,用以下配置类即可:@Configuration public class OpenApiConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("你的项目API文档") .version("1.0.0") .description("这里可以添加API的描述说明")); } }访问正确的UI地址
SpringDoc的默认UI地址是http://localhost:8080/swagger-ui/index.html,如果想保持原来的/swagger-ui.html路径,在application.properties里添加配置:springdoc.swagger-ui.path=/swagger-ui.html
情况2:你使用的是Spring Boot 2.x(对应Spring Framework 5.x)
如果是Spring Boot 2.x版本,那问题可能出在配置或扫描环节:
检查依赖是否完整
确保pom.xml里包含完整的Springfox依赖:<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <!-- 适配Spring Boot 2.x的稳定版本 --> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>确保控制器被Spring扫描到
你的SwaggerConfig配置类和控制器所在的包是否在同一个父包下?如果不在,需要在配置类上添加@ComponentScan(basePackages = "你的控制器所在包路径"),或者直接用@SpringBootApplication(它整合了@Configuration、@EnableAutoConfiguration和@ComponentScan)替代单独的注解组合。检查拦截/安全配置
如果项目用了Spring Security或者自定义拦截器,需要放行Swagger相关资源,否则UI和API文档会被拦截:// Spring Security示例配置 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/swagger-ui.html", "/webjars/**", "/v2/api-docs", "/swagger-resources/**") .permitAll() .anyRequest().authenticated(); }
通用排查小技巧
- 启动项目时查看控制台日志,是否有Swagger相关的报错(比如找不到类、扫描失败)
- 直接访问
/v3/api-docs(SpringDoc)或/v2/api-docs(Springfox),如果能返回JSON格式的API文档,说明后端生成正常,只是UI加载的问题;如果不能返回,说明API扫描环节出了问题。
内容的提问来源于stack exchange,提问作者Héctor Mancilla




