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包,那么我建议使用方法四。
标签:匹配,com,RequestHandlerSelectors,controller,方法,Controller,apiInfo,Swagger,Docket 来源: https://www.cnblogs.com/gpjvm/p/15715720.html