Springdoc无法生成@RepositoryRestResource的Swagger文档怎么办?
问题
已创建带有注解的Repository,但未显示对应的Swagger定义。相关代码及依赖如下:
@RepositoryRestResource(path = "InstanceUptime") public interface InstanceUptimeRepository extends JpaRepository<InstanceUptime, Long> { @Override @RestResource(exported = false) void delete(InstanceUptime entity); }
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-data-rest</artifactId> <version>1.6.14</version> </dependency>
请问还需要进行哪些操作才能使其正常生成文档?
解决方案
- 补充核心springdoc UI依赖:仅引入
springdoc-openapi-data-rest不足以提供完整的Swagger文档生成和UI支持,需要添加对应Web环境的starter依赖。如果是Spring MVC项目,添加:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>1.6.14</version> </dependency>
如果是WebFlux项目,替换为springdoc-openapi-starter-webflux-ui。
确认实体类配置正确性:
InstanceUptime类必须是public访问权限,且标注了JPA核心注解(如@Entity、@Id),缺少这些注解会导致Spring Data REST无法识别该资源,Swagger也就无法生成对应文档。配置springdoc扫描范围:在
application.properties或application.yml中指定Repository所在的包路径,确保springdoc能扫描到你的Repository接口:
springdoc.packages-to-scan=com.yourpackage.repository
检查Spring Data REST自动配置状态:确保应用启动类没有排除
RepositoryRestMvcAutoConfiguration,同时如果配置了spring.data.rest.base-path,要保证该路径和@RepositoryRestResource的path属性没有冲突。放行Swagger相关路径:如果项目使用了Spring Security或自定义拦截器,需要允许访问以下路径:
/v3/api-docs/**/swagger-ui/**/swagger-ui.html
完成以上操作后,重启应用,访问http://localhost:端口号/swagger-ui.html,即可查看InstanceUptime对应的REST接口文档。
内容的提问来源于stack exchange,提问作者Marx
相关产品推荐
相关产品推荐

