SpringBoot整合Swagger2

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

前言:最近在参与一个二手交易平台网站的项目,因为是多人协作,打算采用整合swagger2,编写接口文档,方便团队成员参考和测试。

Swagger 的优势

  • 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
  • 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

整合swagger

第一步:

引入pom依赖:

1
2
3
4
5
6
7
8
9
10
11
12
xml复制代码		<!--引入swagger2依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--引入swaggerui-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>

swagger-bootstrap-ui是国人开发的一个依赖jar包,用来美化原有的swagger界面

第二步:

编写配置类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
java复制代码@Configuration
@EnableSwagger2
public class Swagger2Config {

@Bean
public Docket createRestApi(){

return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.jxauflea.controller"))// 扫描接口的包路径
.paths(PathSelectors.any())
.build();
}

private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("接口文档")// swagger文档的标题
.description("")// 自定义相关描述
.contact(new Contact("xxx","http:localhost/doc.html","xxx@xxx.com"))
.version("1.0")// 当前的版本
.build();
}

}

注意:这里为了自动装配我们的swagger配置,需要在配置类的上方添加@EnableSwagger2注解

第三步

访问页面,通过地址访问文档:http://localhost:8080/doc.html

最终效果

image-20211122215400776

整合过程中出现的问题

项目一启动时,报错

image-20211122215239449

刚开始,我也在各大平台上搜过此错误,大多数的回答都是,swagger的pom中带的版本过低,需要升级版本

image-20211122215510090

我把解决措施放在这,可能会有小伙伴用的上

方法:升级guava

1
2
3
4
5
xml复制代码    <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>

但我试过这样并没有效果,在我几番周折下,发现是springboot版本的问题,刚开始我是2.6.0,后面将版本到2.5.4,完美解决问题。

方法:降低springboot版本

image-20211122215741145

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%