You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data Rest暴露接口的OpenAPI自定义配置咨询

Spring Data Rest 接口自定义Swagger文档配置方案

问题原因

Spring Data Rest 动态生成接口,默认不会自动识别 Repository 方法上的 OpenApi(Swagger)注解,且你代码中存在注解冲突(@RequestParam 和 @PathVariable 同时使用),导致注解元数据无法被Swagger解析。

解决步骤

1. 添加Spring Data Rest专用的OpenApi依赖

确保引入SpringDoc针对Spring Data Rest的集成依赖,这是让Repository注解生效的核心:

<!-- Maven依赖 -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-data-rest</artifactId>
    <version>2.2.0</version> <!-- 请匹配你的Spring Boot版本 -->
</dependency>

2. 修正Repository方法的注解

移除冲突的@RequestParam,保留@PathVariable,并调整参数注解的描述信息:

@Operation(summary = "根据ID获取Person信息")
@RestResource(exported = true)
@ApiResponses(value = { 
    @ApiResponse(responseCode = "404", description = "未找到对应Person"), 
    @ApiResponse(responseCode = "500", description = "服务器内部错误") 
})
@ResponseStatus(value = HttpStatus.OK)
Optional<Person> findById(@Parameter(description = "Person的唯一标识ID", name = "id") @PathVariable Integer id);

3. 配置Spring Data Rest与Swagger的集成

创建配置类,开启实体ID暴露并自定义Swagger文档元数据:

@Configuration
public class DataRestApiConfig implements RepositoryRestConfigurer {

    // 暴露实体ID字段,方便Swagger文档显示
    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(Person.class);
    }

    // 自定义Swagger全局配置
    @Bean
    public OpenApiCustomizer dataRestOpenApiCustomizer() {
        return openApi -> {
            openApi.info(new Info()
                    .title("Spring Data Rest 接口文档")
                    .version("1.0")
                    .description("基于Spring Data Rest自动暴露的REST接口"));
        };
    }
}

4. 开启配置文件支持

在application.yml中添加SpringDoc的配置,启用Spring Data Rest的Swagger支持:

springdoc:
  data-rest:
    enabled: true
  swagger-ui:
    enabled: true

完成以上步骤后,重启应用,Swagger UI就能正确显示你自定义的接口摘要、参数描述和响应信息了。

内容的提问来源于stack exchange,提问作者Sudip Subedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:05:19