You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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):

  1. 替换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>
    
  2. 简化配置类
    删掉原来的@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的描述说明"));
        }
    }
    
  3. 访问正确的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版本,那问题可能出在配置或扫描环节:

  1. 检查依赖是否完整
    确保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>
    
  2. 确保控制器被Spring扫描到
    你的SwaggerConfig配置类和控制器所在的包是否在同一个父包下?如果不在,需要在配置类上添加@ComponentScan(basePackages = "你的控制器所在包路径"),或者直接用@SpringBootApplication(它整合了@Configuration@EnableAutoConfiguration@ComponentScan)替代单独的注解组合。

  3. 检查拦截/安全配置
    如果项目用了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

火山引擎 最新活动