关于如何使用Swagger扫描不同模块下的Controller

237 阅读1分钟

错误方法

  • 参考MapperScan的方法,就直接想着用*省略掉中间路径,发现不行
  • 增加语句.apis(RequestHandlerSelectors.basePackage("co m.project.blog.user.controller"))想着扩大搜索范围,发现依然不行。

具体如下:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("co m.project.blog.*.controller"))
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder().title("系统").version("v1.0").build());
    }

}

正确方法

  • 多个模块的controller所在的包不同,那么就找到这些包共同拥有的父类包,即直接将路径确定到多个controller的上一级即可。

具体如下:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.project.blog"))
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder().title("系统").version("v1.0").build());
    }

}

关于Swagger的两个依赖

<!--http://localhost:8080/swagger-ui.html-->
<!--http://localhost:8080/doc.html-->
<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>
<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>swagger-bootstrap-ui</artifactId>
   <version>1.9.6</version>
</dependency>