是否有人在spring webflux环境中使用swagger库描述webservice的解决方案!?
目标是使用swagger自动生成ws客户端存根。
答案 0 :(得分:4)
变通直到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/");
}
}
springfox-boot-starter
现在可用,并且可以与webflux一起使用。
我们只需要在pom文件中添加以下启动项目即可。
注意:在类路径中使用springfox-boot-starter
时,我们不需要@EnableSwagger2WebFlux
。
删除对springfox-swagger2
的显式依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${io.springfox}</version>
</dependency>
答案 1 :(得分:2)
您可能希望订阅以下Springfox问题:https://github.com/springfox/springfox/issues/1773
答案 2 :(得分:2)
在等待springfox项目中的正式webflux support时,deblockt在GitHub上有一种解决方法:https://github.com/deblockt/springfox/tree/feature/webflux。
只需签出sourecode并构建您自己的jar,然后将其包含到您的项目中即可。
答案 3 :(得分:0)
我在github中使用swagger,project配置了Spring boot 2 Servlet堆栈。 有总比没有好。 :) https://github.com/armdev/springboot2-swagger
答案 4 :(得分:0)
您可以将spring-boot-starter-web和spring-boot-starter-webflux一起使用。因此,如果您真的想在Spring Webflux中使用swagger,那么必须将spring-boot-starter-web依赖项添加到项目中。您现在可以完全像使用spring web一样使用swagger了。不会有任何区别。
答案 5 :(得分:0)
从2.9.2版开始,您可以将swagger与webflux一起使用。