(狂神)SpringBoot笔记------19

Swagger介绍及集成

Swagger号称世界上最流行的API框架。

RestFull Api 文档在线自动生成工具=》Api文档与api定义同步更新

直接运行,可以测试api接口。

支持多种语言:java,php..........

我们需要在项目中使用。需要jar包:

swagger2

ui

SpringBoot集成Swagger

1.新建一个SpringBoot-web项目

2.导入相关依赖

3.编写一个Hello工程

我们这样就有了两个请求,一个是hello请求,一个是进入主页后的/error请求。

因为我们知道我们的这个依赖可以看出来不是我们SpringBoot的。所以我们就有了第四步。

4.配置Swagger==>Config

5.测试运行

要说的一点是,现在最新的版本是3.0的swagger依赖,但是用这个的时候启动报错了。

我尝试了去改一下我的版本,我选择了2.9.2的版本。

再次开启服务器运行:

 依然不错。

查了好长时间百度,说是2.6版本的springboot导入这两个包不兼容,也没有搜到好的解决办法。

然后查到有说是要降低springboot的版本的。我也尝试了去降低版本,把版本降低到2.5.6发现好使了:

配置Swagger信息

Swagger的bean实例Docker

我们进入Docket的源码,我们可以看到它有这些属性。它给了我们一些默认值,我们需要去改动这些属性的值。

 我们如果想配置apiInfo属性,我们就可以进入它的源码中去看看它里面有什么:

我们其实就是去修改它的源码中的属性,我们学Swagger很多时候都是结合源码去学习。 

我们对这些元素进行修改。

对比swagger页面来看,title位置显然就是页面的标题:

 

我们可以更改它。

然后第二个属性是它的描述description:

然后还有版本号属性,我们可以看到是1.0,这个我就不更改了。还有一个team组的属性是一个url类型,我也不去改动了。

我们可以看到我们的属性CONTACT是爆红的,所以我们去看看源码它是否被赋予初值:

 

我们可以看到它是一个对象类型,所以我们也要先声明这个对象,给它赋予值。

 

这个是一个作者信息的描述,这部分是我瞎写的。

然后下一个属性是一个apache的版本号,我也不去改动。

最后默认了一个为空的ArrayList集合。

我们这个Swagger配置类应该是相当简单的了。这个就是我们先去写它的Docket对象,然后通过Docket对象去接管Swagger里面的对应的信息,我们这里是只改动了ApiInfo的信息,然后就去改动ApiInfo里的各种信息。

这部分不是很重要,就是了解一下我们的Swagger页面,还没有涉及到它真正的功能部分。

我们先来看看我们的页面现在是什么样的了?

 

 变成了我们改动之后的样子了。

配置扫描接口及开关

Docket.select()

我们这里是使用链式结构,用builde的建造者模式,我们去通过select方法来锁定我们的apis所要扫描的包就是我们的controller层。

我们再运行一下我们的界面:

 

我们发现现在页面上很多东西都没有了,就剩下我们的Controller层的hellocontroller了

 

我们这部分可以通过很多方式去扫描,但是最常用的还是通过包来进行扫描。

 

我们之前是扫描定位的controller层,然后我们还可以用paths方法去在这个包中就行过滤只保留这个层中kuang目录下的文件。但是我们这里是没有内容的,所以我们再运行一下,应该就什么也找不到了。

 

配置是否启动Swagger:

 

我们可以调用enable属性,false是不能启动swagger在浏览器中,true是可以。

我们运行一下看看:

 

我们现在有一个使用Swagger的情景:

我只希望我的Swagger在生产环境中使用,在发布的时候不使用。

我们应该怎么去做呢?

判断是不是生产环境 flag=false

注入enable(false)

我们现在有两个文件,就是两个环境,dev的就是我们的生产环境。

 

我们的pro 是我们的发布环境,我们指定的是dev,所以在生产环境可以启动Swagger,在发布环境中则不能启动。我们是通过写我们的properties文件来做的,那么我们怎么在代码中去实现呢?

 

运行:

 

我们改一下这地方,让他可以启动:

 

我们在properties中把修改一下:

 

我们现在锁定的是pro,再运行一下:

这部分不应该是写true或false,应该写我们的flag:

通过状态去判断:

运行:

 

 我们再换成原来的样子:

 

分组和接口注释问题及小结 

添加这个分组属性后,我们再来看看我们的页面:

 

我们的分组信息发生了改变。

如何配置多个分组:

首先我们想我们可不可以配置多个Docket,这样有多个Docket就有了多个分组:

 

运行一下:

 

实体类配置:

 

现在我们哪个组都不能去找到我们的这个实体类,因为我们还没有去对它进行任何配置呢。

 

在Controller中定义方法去返回User类。我们把包去扫描到controller,这样肯定是可以找到实体类的,我们去运行查看一下:

 

这部分还有一些注解是比较重要的:

 

我们可以在实体类中去增加一些注解,去告诉用户,这个代码的一些信息。

 

会产生提示。

在实体类中我们可以使用@Api注释。

在controller层我们也可以使用@Api的一系列的注解用于注释。

 

 

也可以使用@ApiParam给controller方法里的属性加注释。

我们的Swagger它还有这种测试的功能:

 

 

可以返回一些信息。

异步任务

我们新建一个项目,然后我们去写一个线程休眠3秒钟的代码:

再去写一个异步的controller:

 

目前代码我们写的很简单,我们只是想让大家看看这个效果:

运行一下:

 

 

 

每次打开网页都会去等待3秒转圈才会打开我们的页面。

我们就可以利用我们现在学习的springboot框架去进行异步任务来解决这个问题:

想解决这个办法,我们只需要写两个注解就可以了:

先在我们的Service方法上去写一个注解:

然后我们去在我们的启动类上去添加这样的一个开启异步的注解:

 

这样就可以了。 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值