微服务学习二: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 <br>这两个注解,一个是swagger2的配置,一个是项目启动的时候启动swagger2.<br>具体什么意思看下代码就知道了。 |
1 2 | //为当前包路径 <span style= "color: #ff0000" >.apis(RequestHandlerSelectors.basePackage( "com.springboot.example.Controller" ))</span><br><span style= "color: #ff0000" >这个包指的是我们在哪些类中使用swagger2来测试。</span> |
第三步:使用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的集成完毕。