使用的是 knife4j 来生成swagger
重要架包
webflux的spring-plugin-core和spring-plugin-metadata与swagger中的存在冲突,需要剔除webflux中的然后重新引入
<!-- knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.9</version>
<exclusions>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-webmvc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-webflux</artifactId>
<version>2.10.5</version>
<exclusions>
<!-- swagger 版本冲突 去除架包-start -->
<exclusion>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-metadata</artifactId>
</exclusion>
<!-- swagger 版本冲突 去除架包-stop -->
</exclusions>
</dependency>
<!-- swagger 版本冲突 重新添加配置-start -->
<dependency>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-metadata</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<!-- swagger 版本冲突 重新添加配置-stop -->
swagger配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebFlux;
import java.util.Optional;
/**
* @author kittlen
* @version 1.0
* @date 2023/04/28 15:52
*/
@Configuration
@EnableSwagger2WebFlux
public class SwaggerWebFluxConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
.description("xxx")
.title("xxx")
.build())
.select()
.apis(RequestHandlerSelectors.basePackage("com.kittlen.controller"))
.paths(PathSelectors.any())
.build()
.genericModelSubstitutes(Optional.class, Flux.class, Mono.class);
}
}