1. 在pom文件中添加Swagger2 所需要的依赖配置
<!-- swagger 用于定义 API 文档 -->
<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>
<!-- 美化 swagger -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>2. 配置Swagger2 指定扫描包与描述展示信息
/**
* <h1>Swagger 配置类</h1>
* 原生: /swagger-ui.html
* 美化: /doc.html
* */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* <h2>Swagger 实例 Bean 是 Docket, 所以通过配置 Docket 实例来配置 Swagger</h2>
* */
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
// 展示在 Swagger 页面上的自定义工程描述信息
.apiInfo(apiInfo())
// 选择展示哪些接口
.select()
// 只有 com.**.**包内的才去展示
.apis(RequestHandlerSelectors.basePackage("com.**.**"))
//任何文档生成文档路径
.paths(PathSelectors.any())
.build();
}
/**
* <h2>Swagger 的描述信息</h2>
* */
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("imooc-micro-service")
//描述信息
.description("e-commerce-springcloud-service")
//联系方式
.contact(new Contact(
"**", "www.**.com", "**@**.com"
))
.version("1.0")
.build();
}
}
3. Web Mvc 配置,让MVC 加载Swagger 静态资源
继承WebMvcConfigurationSupport
/**
* <h2>让 MVC 加载 Swagger 的静态资源</h2>
* */
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").
addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}4.拦截器过滤swagger 继承HandlerInterceptor
/**
* <h2>校验是否是白名单接口</h2>
* swagger2 接口
* */
private boolean checkWhiteListUrl(String url) {
return StringUtils.containsAny(
url,
"springfox", "swagger", "v2",
"webjars", "doc.html"
);
}