Spring webflux環境でSwaggerライブラリを使用してWebサービスを説明するソリューションはありますか?
目標は、Swaggerを使用してwsクライアントスタブを自動的に生成することです。
Spring Boot2.xおよびSpring5の機能は、2.8.0の時点ではまだspringfoxでサポートされていません。
次のSpringfoxの問題をサブスクライブすることをお勧めします: https://github.com/springfox/springfox/issues/177
Springfoxプロジェクトからの公式 webfluxサポート を待っている間、GitHubでdeblocktによって行われる回避策があります: https://github.com/deblockt/springfox/tree/feature/webflux 。
Sourecodeをチェックアウトして、独自のjarを作成し、プロジェクトに含めてください。
Springfox 3.0.0
が利用できなくなるまで回避します
Pomファイル
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-webflux</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<repositories>
<repository>
<id>spring-libs-milestone</id>
<name>Spring Milestone Maven Repository</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</repository>
</repositories>
構成
@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfig implements WebFluxConfigurer {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.genericModelSubstitutes(Mono.class, Flux.class, Publisher.class)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger**")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
リリース2.9.2以降、webfluxでswaggerを使用できます。
Spring-boot-starter-webをspring-boot-starter-webfluxと一緒に使用できます。したがって、Spring WebfluxでSwaggerを本当に使用したい場合は、spring-boot-starter-web依存関係をプロジェクトに追加する必要があります。スプリングウェブで使用したのとまったく同じように、Swaggerを使用できます。違いはありません。
Spring boot 2サーブレットスタックをSwagger、プロジェクトでgithubで構成しました。何もないよりマシ。 :) https://github.com/armdev/springboot2-swagger