springcloud版本Dalston.SR1 boot 版本:1.5.6.RELEASE
整合各个服务的文档在网关统一查看
首先在网关加入相关jar
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.0</version>
</dependency>
<!--swagger2-ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.0</version>
</dependency>
<!--解决启动报错缺少jar包-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>
网关SwaggerConfig配置
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2);
}
}
DocumentationConfig 自动从eureka拉取服务文档
@Component
@Primary
public class DocumentationConfig implements SwaggerResourcesProvider{
private final RouteLocator routeLocator;
public DocumentationConfig(RouteLocator routeLocator) {
this.routeLocator = routeLocator;
}
// 自动获取系统配置的路由资源集合
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources = new ArrayList<>();
List<Route> routes = routeLocator.getRoutes();
routes.forEach(route -> {
resources.add(swaggerResource(route.getId(),route.getFullPath().replace("**", "v2/api-docs"),"2.0"));
});
return resources;
}
// 获取对应的路由资源
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
其它微服务pom都是一样的
swaggerConfig配置不一样
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.apiInfo())
.select()
//扫描哪个包
.apis(RequestHandlerSelectors.basePackage("com.pwl.pcloud"))
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxx接口文档")
.description("xxx相关接口的文档")
.version("1.0")
.build();
}
}
然后启动项目就可以