SpringBoot整合Swagger2/Swagger3之拦截器配置方式
作者:Ju3tinZ2
这段文章详细介绍了Springfox Swagger 3.0的配置方法,包括前端资源路径设置和POM依赖配置,并提供了AntPath路径匹配规则说明,帮助大家更好地理解和应用Swagger文档生成
1. swagger2.0
1.1 POM依赖
<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>1.2 Swagger设置
@Configuration
// 关键
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestAPI() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 改为自己的controller包路径
.apis(RequestHandlerSelectors.basePackage("xx.xx.xx.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("WebNovel接口文档")
.description("WebNovel Restful 接口")
.contact(new Contact("xxUser", "#", "xxUser@.qq.com"))
.version("1.0")
.build();
}
}
1.3 拦截器排除
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
// 请求路径排除
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor()
.addPathPatterns("/**")
.excludePathPatterns("/swagger-resources/**")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v2/**")
.excludePathPatterns("/swagger-ui.html/**");
super.addInterceptors(registry);
}
// 资源映射增加
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}
2. swagger3.0
swagger3.0前端资源路径在springfox-swagger-ui-3.0.0.jar包中。
具体路径:META-INF\resources\webjars\springfox-swagger-ui

2.1 POM依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>2.2 Swagger设置
@Configuration
// 关键
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket createRestAPI() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("xx.xx.xx.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("WebNovel接口文档")
.description("WebNovel Restful 接口")
.contact(new Contact("xxUser", "#", "xxUser@qq.com"))
.version("1.0")
.build();
}
}
2.3 拦截器排除
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
super.addResourceHandlers(registry);
}
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor()
.addPathPatterns("/**")
.excludePathPatterns("/swagger**/**")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v3/**")
.excludePathPatterns("/doc.html");
super.addInterceptors(registry);
}
}
3. Ant Path匹配规则
说明:
| Wildcard | Description |
|---|---|
| ? | 匹配任意单个字符 |
| * | 匹配0或多个字符 |
| ** | 匹配0或多级目录 |
例子:
| Path | Description |
|---|---|
| /api/** | app路径下所有路径 |
| /**/*.html | 任意html文件 |
| /my*/*** | my开头的路径下的所有路径 |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
