1. 程式人生 > 其它 >SpringBoot多模組配置swagger2失敗

SpringBoot多模組配置swagger2失敗

在專案結構中,我將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