创建创建microservicecloud-swagger

pom文件

<dependencies>
<!-- SpringBoot整合eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- swagger-spring-boot -->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
</dependencies>

yml文件

eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
###是否向注册中心注册自己
register-with-eureka: true
###是否需要从eureka上获取注册信息
fetch-registry: true

properties文件

#swagger配置
swagger.enabled=true
swagger.title=Auth-Server-API
swagger.description=Auth-Server接口说明
swagger.basePackage=com.yehui.controller
swagger.basePath=/**
swagger.excludePath=/error
swagger.version=1.0
#接口管理员配置
swagger.contact.name=yehui
swagger.contact.url=xiaokun.wang@midea.com
swagger.contact.email=xiaokun.wang@midea.com
server.port=9003
eureka.client.u

扫描单包  swagger类

@Configuration
@EnableSwagger2 //swagger注解
public class SwaggerConfig { @Autowired
private Environment ev; //得到扫描包
public String getBasePack(){
String basePage = ev.getProperty("swagger.basePackage");
return isEmpty(basePage)?"":basePage;
} //得到标题
public String getTitle(){
String title = ev.getProperty("swagger.title");
return isEmpty(title)?"":title;
}
//接口文档说明
public String getDescription(){
String description = ev.getProperty("swagger.description");
return isEmpty(description)?"":description;
}
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// api扫包
.apis(RequestHandlerSelectors.basePackage(getBasePack())).paths(PathSelectors.any()).build();
} private ApiInfo apiInfo() {
return new ApiInfoBuilder().title(getTitle()).description(getDescription())
.termsOfServiceUrl("http://www.itmayiedu.com")//官方网址
.contact(contact())
.version(getVersion()).build();
}
//获取版本号
public String getVersion(){
String version = ev.getProperty("swagger.version");
return isEmpty(version)?"":version;
}
//接口管理员配置
public Contact contact(){
String name = ev.getProperty("swagger.contact.name");
String url = ev.getProperty("swagger.contact.url");
String email = ev.getProperty("swagger.contact.email");
name = isEmpty(name)?"":name;
url = isEmpty(url)?"":url;
email = isEmpty(email)?"":email;
return new Contact(name,url,email);
}
/**
* 判断字符串是否为空,null或者length=0表示空值
*
* @param str
* @return true-空字符串,false-非空字符串
*/
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
} }

支持多包的swagger类

@Component
@EnableSwagger2
public class SwaggerConfig {
@Autowired
private Environment env; private String basePackage() { // controller接口所在的包
String basePackage = env.getProperty("swagger.basePackage");
return CommUtil.isEmpty(basePackage) ? "" : basePackage;
} private String title() { // 当前文档的标题
String title = env.getProperty("swagger.title");
return CommUtil.isEmpty(title) ? "说明文档" : title;
} private String description() { // 当前文档的详细描述
String description = env.getProperty("swagger.description");
return CommUtil.isEmpty(description) ? "接口说明文档" : description;
} private String version() { // 当前文档的版本
String version = env.getProperty("swagger.version");
return CommUtil.isEmpty(version) ? "1.0" : version;
} private Contact contact() { // 接口管理员配置
String name = env.getProperty("swagger.contact.name");
String url = env.getProperty("swagger.contact.url");
String email = env.getProperty("swagger.contact.email"); return new Contact(CommUtil.isEmpty(name) ? "admin" : name, CommUtil.isEmpty(url) ? "admin@midea.ciom" : url,
CommUtil.isEmpty(email) ? "admin@midea.ciom" : email);
} @Bean
public Docket newDocket() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(input -> declaringClass(input).transform(handlerPackage(basePackage())).or(true))
.paths(PathSelectors.any()).build();
} private ApiInfo apiInfo() {
return new ApiInfoBuilder().title(title()).description(description()).version(version()).contact(contact())
.build();
} private Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
return input -> {
// 循环判断匹配
for (String strPackage : basePackage.split(",")) {
boolean isMatch = input.getPackage().getName().startsWith(strPackage);
if (isMatch) {
return true;
}
}
return false;
};
} private Optional<? extends Class<?>> declaringClass(RequestHandler input) {
return Optional.fromNullable(input.declaringClass());
}
}

启动服务测试

swagger (九)的更多相关文章

  1. Swagger使用总结(十九)

    1. Swagger是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTfu ...

  2. (九) SpringBoot起飞之路-整合/集成Swagger 2 And 3

    兴趣的朋友可以去了解一下其他几篇,你的赞就是对我最大的支持,感谢大家! (一) SpringBoot起飞之路-HelloWorld (二) SpringBoot起飞之路-入门原理分析 (三) Spri ...

  3. 小白的springboot之路(十九)、集成swagger(com.spring4all篇)

    0-前言 集成swagger,有两种方式: 一种在前面已经介绍过了,直接集成官方的springfox-swagger2的方式,这种方式需要在配置类中配置 第二种方式是这里要介绍的方式,国人写的com. ...

  4. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探

    更新 1.如果看不懂本文,或者比较困难,先别着急问问题,我单写了一个关于依赖注入的小Demo,可以下载看看,多思考思考注入的原理: https://github.com/anjoy8/BlogArti ...

  5. 【Core Swagger】.NET Core中使用swagger

    一.入门 https://www.nuget.org/packages/Swashbuckle.AspNetCore.SwaggerGen/ 1.添加核心NUGET包 Swashbuckle.AspN ...

  6. Swagger 教程

    转自   Vojtech Ruzicka的编程博客 (一)Swagger和SpringFox 记录REST API非常重要.它是一个公共接口,其他模块,应用程序或开发人员可以使用它.即使你没有公开曝光 ...

  7. Z从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探

    本文梯子 本文3.0版本文章 更新 代码已上传Github+Gitee,文末有地址 零.今天完成的绿色部分 一.依赖注入的理解和思考 二.常见的IoC框架有哪些 1.Autofac+原生 2.三种注入 ...

  8. SpringBoot系列(九)单,多文件上传的正确姿势

    SpringBoot系列(九)分分钟解决文件上传 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...

  9. jackson学习之九:springboot整合(配置文件)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 系列文章汇总 jackson学习之一:基本信息 jac ...

随机推荐

  1. BZOJ4487 JSOI2015染色问题(组合数学+容斥原理)

    逐个去除限制.第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数…… 然后是限制二.同样可以容斥,即恰好选n行的方案数=至 ...

  2. android 与 小米1S刷机学习

    本文内容为本博客作者原创,转载请注明出处或者发私信. [名词] 1.ROM包 :安卓手机系统,以.ZIP结尾,类似windows的 win7系统包,300M-700M不止 2.卡刷(Recovery模 ...

  3. kafka.common.ConsumerRebalanceFailedException异常解决

    kafka.common.ConsumerRebalanceFailedException: group_dd-1446432618163-2746a209 can't rebalance after ...

  4. Linux下rsync 安装与配置

    1.什么是rsync Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 程两个 ...

  5. ubuntu12.04回归到经典的gnome界面

    要想删除Unity恢复到经典Gnome桌面也很简单,几乎就是一条命令的事情--命令这种东西虽然不直观,但非常可靠和快捷,同时按住Ctrl+Alt+T三个键,调出系统终端,输入: sudoapt-get ...

  6. Quartus ModelSim联合仿真中的RAM初始化

    Modelsim只支持Hex格式的初始化文件,文件需要放在仿真的根目录下,例如:.\simulation\modelsim:并且在利用Quartus宏生成IP时,选择的初始化文件必须用绝对路径!否则M ...

  7. bzoj3669: [Noi2014]魔法森林 lct版

    先上题目 bzoj3669: [Noi2014]魔法森林 这道题首先每一条边都有一个a,b 我们按a从小到大排序 每次将一条路劲入队 当然这道题权在边上 所以我们将边化为点去连接他的两个端点 当然某两 ...

  8. HDU1024(最大M子段和)

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. 白话TCP三次握手

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...

  10. [ 总结 ] 删除通过find查找到的文件

    [root@cloud abc]# touch test{,,,} [root@cloud abc]# ls shadow test test1 test2 test3 test5 [root@clo ...