Spring boot - 打开 api - 如何使用 java 配置读取外部 swagger api 文档

Spring boot - open api - how to read external swagger api documents using java config

我在我的 spring 启动应用程序中以 json 格式生成多个 swagger api doc 文件并存储在位置 - static/swaggerdoc。我可以通过在 application.properties 中提及路径来读取文件,如下所示

application.properties

springdoc.swagger-ui.urls[0].url=/swaggerdoc/openapi.json
springdoc.swagger-ui.urls[0].name=openapi

springdoc.swagger-ui.urls[1].url=/swaggerdoc/openapi1.json
springdoc.swagger-ui.urls[1].name=openapi1

springdoc.swagger-ui.urls[2].url=/swaggerdoc/openapi2.json
springdoc.swagger-ui.urls[2].name=openapi2

springdoc.swagger-ui.urls[3].url=/swaggerdoc/openapi3.json
springdoc.swagger-ui.urls[3].name=openapi3

现在我必须在应用程序启动时动态读取 springdoc.swagger-ui.urls,而不是从属性文件读取静态路径。感谢您的帮助。

我正在使用以下依赖项

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-ui</artifactId>
  <version>1.6.4</version>
</dependency>

谢谢。

我可以通过在我的配置中添加以下 bean 定义来解决这个问题 class 以使用 java 配置动态加载外部文档。

@Primary
@Bean
public Set<SwaggerUrl> apis(SwaggerUiConfigProperties swaggerUiConfig) {
Set<SwaggerUrl> swaggerUrlSet = new HashSet<>();
externalDocs.forEach(doc -> {
String docName = doc.get("docName");
SwaggerUrl wsResource = new SwaggerUrl(docName, "/swaggerdoc/" + docName + ".json");
swaggerUrlSet.add(wsResource);
});
swaggerUiConfig.setUrls(swaggerUrlSet);
return swaggerUrlSet;
}