Spring Boot整合Swagger2
2019-03-20 本文已影响0人
虫儿飞ZLEI
1.SpringBoot整合Swagger2并集成swagger-bootstrap-ui
1.1 导包
<!-- swagger配置 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/io.swagger/swagger-models -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.0</version>
</dependency>
1.2 编写配置文件
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(basePackage("com.base.web.kylin.sjjsq.web"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("大数据基础平台的swagger文档")
.description("大数据基础平台的swagger文档")
.termsOfServiceUrl("http://localhost:9099/index")
.version("1.0")
.build();
}
}
1.3 在入口处添加注解

1.4 关于swagger各种注解的使用,跳过
1.5 启动项目,查看swagger的文档页面
swagger2的默认文档地址是http://localhost:9099/swagger-ui.html,
由于使用了swagger-bootstrap-ui,可以使用http://localhost:9099/doc.html这个地址,界面更友好

2. 配置多路径扫描
两种方式
2.1 方式一
设置以“;”分割路径,但是会使用到过时代码
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(basePackage("com.base.web.kylin.sjjsq.web" +";"+"com.base.web.aisino.web"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("大数据基础平台的swagger文档")
.description("大数据基础平台的swagger文档")
.termsOfServiceUrl("http://localhost:9099/index")
.version("1.0")
.build();
}
private static final String FENHAO = ";";
public static Predicate<RequestHandler> basePackage(final String basePackage) {
return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
}
private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
return input -> {
// 循环判断匹配
for (String strPackage : basePackage.split(FENHAO)) {
boolean isMatch = input.getPackage().getName().startsWith(strPackage);
if (isMatch) {
return true;
}
}
return false;
};
}
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
return Optional.fromNullable(input.declaringClass());
}
}
2.2 方式二
不会出现过时代码
@Configuration
@EnableSwagger2
public class Swagger2Config {
Predicate<RequestHandler> selector1 = RequestHandlerSelectors.basePackage("com.base.web.kylin.sjjsq.web");
Predicate<RequestHandler> selector2 = RequestHandlerSelectors.basePackage("com.base.web.aisino.web");
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(Predicates.or(selector1,selector2))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("大数据基础平台的swagger文档")
.description("大数据基础平台的swagger文档")
.termsOfServiceUrl("http://localhost:9099/index")
.version("1.0")
.build();
}
}