SpringBoot多模組配置swagger2失敗
阿新 • • 發佈:2022-04-02
在專案結構中,我將SwaggerConfig檔案寫在common模組,其他模組通過pom引入這個模組,swagger的版本如下:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
但是啟動專案使出現如下錯誤:
The following method did not exist: springfox.documentation.builders.RequestHandlerSelectors.any()Lcom/google/common/base/Predicate;
在上網搜查和對比別人的程式碼後,經驗證以下的方案有效:
將依賴改為:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>3.0.0</version> </dependency>
配置檔案改為:
@Configuration @EnableSwagger2 @EnableWebMvc public class SwaggerConfig { @Bean public Docket createRestApi() { // 新增請求引數,token請求頭部引數傳入後端 // ParameterBuilder parameterBuilder = new ParameterBuilder(); // List<Parameter> parameters = new ArrayList<Parameter>(); // parameterBuilder.name("token").description("token") // .modelRef(new ModelRef("string")).parameterType("header").required(false).build(); // parameters.add(parameterBuilder.build()); // return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() // .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()) // .build().globalOperationParameters(parameters); // 不加引數 return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()).build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("系統 API 文件") .description("This is a restful api document of smart watter.") .version("1.0") .build(); } }
最後要注意這個依賴包的swagger網頁路徑發生了變化:
http://localhost:8095/swagger-ui/index.html