Swagger如何匹配多个Controller类或者目录

提示:方法四或许是你们需要的方法!!!

 

方法一(最普通的方式):匹配一个controller目录下的所有controller类。

  

 1  @Bean
 2     public Docket creatRestApi(){
 3         return new Docket(DocumentationType.SWAGGER_2)
 4                 .apiInfo(apiInfo())
 5                 .select()
 6                 //关键语句
 7                 .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")
 8                 )
 9                 .paths(PathSelectors.any())
10                 .build();
11     }

 

方法二匹配有指定注解的类。

 1  @Bean
 2     public Docket creatRestApi(){
 3         return new Docket(DocumentationType.SWAGGER_2)
 4                 .apiInfo(apiInfo())
 5                 .select()
 6                 //关键语句
 7                 .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)
 8                 )
 9                 .paths(PathSelectors.any())
10                 .build();
11     }

 

方法三匹配有指定注解的方法。

 1 @Bean
 2     public Docket creatRestApi(){
 3         return new Docket(DocumentationType.SWAGGER_2)
 4                 .apiInfo(apiInfo())
 5                 .select()
 6                 //关键语句
 7                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)
 8                 )
 9                 .paths(PathSelectors.any())
10                 .build();
11     }

 

方法四我觉得是最重要的方法(强烈推荐!!!!):可以匹配多个controller包(多个controller包不在同一级)

             

 1  @Bean
 2     public Docket creatRestApi(){
 3         return new Docket(DocumentationType.SWAGGER_2)
 4                 .apiInfo(apiInfo())
 5                 .select()
 6                 .apis(Predicates.or(RequestHandlerSelectors.basePackage("com.example.demo.controller"),
 7                         RequestHandlerSelectors.basePackage("com.example.demo.gp.controller"),
 8                         RequestHandlerSelectors.basePackage("com.gp.callback.controller"))
 9                 )
10                 .paths(PathSelectors.any())
11                 .build();
12         
13     }

 如果上面的Predicates类报红的话,pom文件导入jar包

 <!-- guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
        </dependency>

 

总结:相比四种方法,如果项目中只有一个controller包的话,直接使用方法一就可以了,如果项目中有多个controller包,那么我建议使用方法四。

 

 

posted @ 2021-12-21 15:59  IUReady  阅读(1190)  评论(0编辑  收藏  举报