Swagger如何匹配多个Controller类或者目录
时间:2021-12-21 作者:gpjvm
方法一(最普通的方式):匹配一个controller目录下的所有controller类。
1 @Bean 2 public Docket creatRestApi(){ 3 return new Docket(域名GER_2) 4 .apiInfo(apiInfo()) 5 .select() 6 //关键语句 7 .apis(域名Package("域名.controller") 8 ) 9 .paths(域名()) 10 .build(); 11 }
方法二:匹配有指定注解的类。
1 @Bean 2 public Docket creatRestApi(){ 3 return new Docket(域名GER_2) 4 .apiInfo(apiInfo()) 5 .select() 6 //关键语句 7 .apis(域名ClassAnnotation(域名s) 8 ) 9 .paths(域名()) 10 .build(); 11 }
方法三:匹配有指定注解的方法。
1 @Bean 2 public Docket creatRestApi(){ 3 return new Docket(域名GER_2) 4 .apiInfo(apiInfo()) 5 .select() 6 //关键语句 7 .apis(域名MethodAnnotation(域名s) 8 ) 9 .paths(域名()) 10 .build(); 11 }
方法四:我觉得是最重要的方法:可以匹配多个controller包(多个controller包不在同一级)
1 @Bean 2 public Docket creatRestApi(){ 3 return new Docket(域名GER_2) 4 .apiInfo(apiInfo()) 5 .select() 6 .apis(域名(域名Package("域名.controller"), 7 域名Package("域名.域名roller"), 8 域名Package("域名域名roller")) 9 ) 10 .paths(域名()) 11 .build(); 12 13 }
如果上面的Predicates类报红的话,pom文件导入jar包
<!-- guava --> <dependency> <groupId>域名a</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency>
总结:相比四种方法,如果项目中只有一个controller包的话,直接使用方法一就可以了,如果项目中有多个controller包,那么我建议使用方法四。