微服务学习二:springboot与swagger2的集成 - 小虾米的java梦 - 博客园
1、swagger是什么,这个我觉得凡是一个开发人员就应该知道度娘啊,绝对强大。
简单说下,它的出现就是为了方便进行测试后台的restful形式的接口,实现动态的更新,当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要认为的维护这个接口进行测试。
2、springboot与swagger的集成:
第一步:jar包的引入:
关于jar包的引入出现了一个问题就是版本的问题,可能需要与你的编辑器或者jdk要匹配吧,试了几个才最终成功导入jar。
第二步:swagger的配置启动类编写:
要使用swagger要进行一些配置,这个在界面的图上是可以显示的:类似于说明书:在这个类中我们会使用注解来进行启动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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package
com.springboot.example;
//swagger2的配置文件,在项目的启动类的同级文件建立
import
org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration;
import
springfox.documentation.builders.ApiInfoBuilder;
import
springfox.documentation.builders.PathSelectors;
import
springfox.documentation.builders.RequestHandlerSelectors;
import
springfox.documentation.service.ApiInfo;
import
springfox.documentation.service.Contact;
import
springfox.documentation.spi.DocumentationType;
import
springfox.documentation.spring.web.plugins.Docket;
import
springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public
class
Swagger2 {
//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
@Bean
public
Docket createRestApi() {
return
new
Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//为当前包路径
.apis(RequestHandlerSelectors.basePackage(
"com.springboot.example.Controller"
))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private
ApiInfo apiInfo() {
return
new
ApiInfoBuilder()
//页面标题
.title(
"Spring Boot 测试使用 Swagger2 构建RESTful API"
)
//创建人
.contact(
new
Contact(
"MarryFeng"
,
"http://www.baidu.com"
,
""
))
//版本号
.version(
"1.0"
)
//描述
.description(
"API 描述"
)
.build();
}
}
这里的坑是:所使用类的引入文件要注意到底是哪个,之前因为这个出错了,
1
2
@Configuration
@EnableSwagger2
这两个注解,一个是swagger2的配置,一个是项目启动的时候启动swagger2.具体什么意思看下代码就知道了。
1
2
//为当前包路径
.apis(RequestHandlerSelectors.basePackage(
"com.springboot.example.Controller"
))这个包指的是我们在哪些类中使用swagger2来测试。
第三步:使用swagger来进行模拟测试:
使用swagger2来进行测试接口主要是在哪些类中使用:这里我们依然选择在controller层:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
package
com.springboot.example.Controller;
import
com.springboot.example.Service.StudentService;
import
com.springboot.example.entity.Student;
import
io.swagger.annotations.Api;
import
io.swagger.annotations.ApiImplicitParam;
import
io.swagger.annotations.ApiOperation;
import
org.slf4j.Logger;
import
org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.web.bind.annotation.PathVariable;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RestController;
/**
* Created by Administrator on 2017/9/13.
*/
@RestController
@RequestMapping
(
"api"
)
@Api
(
"swaggerDemoController相关的api"
)
public
class
SwaggerDemoController {
@Autowired
private
StudentService studentService;
private
static
final
Logger logger= LoggerFactory.getLogger(SwaggerDemoController.
class
);
@ApiOperation
(value =
"根据id查询学生信息"
, notes =
"查询数据库中某个的学生信息"
)
@ApiImplicitParam
(name =
"id"
, value =
"学生ID"
, paramType =
"path"
, required =
true
, dataType =
"Integer"
)
@RequestMapping
(value =
"/{id}"
, method = RequestMethod.GET)
public
Student getStudent(
@PathVariable
int
id) {
logger.info(
"开始查询某个学生信息"
);
return
studentService.selectStudentById(id);
}
}
上面这些可以看下具体的注解是什么意思:
这样swagger2与springboot就集成完毕了。
看下最终效果吧:
访问路径:
http://localhost:8080/swagger-ui.html
输入id后,我们可以看到查询结果:、
是不是很方便,我们不用像postman一样来编写入口,swagger2自动完成:
而且实时更新:
是不是很方便!
至此swagger2与springboot的集成完毕。