在集成Swagger之前,得先说说什么是Swagger,它是用来做什么的,然后再讲讲怎么集成,怎么使用,当然,在这之前,需要了解一下OpenAPI。

  • OpenAPI

  OpenAPI 3.0规范定义了一个标准的、语言无关的RESTful APIs,它可以被人和机器所理解和使用,而不需要查找其源码、说明文档或其他方面。如果属性定义正确的话,消费者可以使用少量的逻辑代码与远程服务进行交互。可以使用OpenAPI的接口定义文件生成相应的文档、服务端接口、客户端接口和其他单元测试等等。

  简单的来说,就是通过这套规范,先定义接口,再根据定义文件生成相应语言的接口代码,之后可以来进行具体逻辑编写。一次定义,可多次使用。其定义的接口文档主要包含以下内容:

  1. 可访问的端点(endpoints )和每个端点的操作((GET /usersPOST /users);
  2. 每个端点的输入输出参数;
  3. 授权方式;
  4. 联系方式、团队名称、作者等其他信息;
  • Swagger

  swagger是一个可以帮助你设计、构建代码、生成文档和测试API的工具集合,它是根据OpenAPI的规范具体实现的开源工具。包含以下几个工具:

  1. Swagger Editor:API设计器,基于浏览器的在线编辑器;
  2. Swagger UI :根据API的描述信息生成文档,可以查看和测试API;
  3. Swagger Codegen :根据API的设计文档,生成需要的服务端或客户端代码;

  使用它的意义主要在于,接口的规范化开发,文档的快速生成。开发最头疼的就是写文档,这样的话,可以省去大把的时间,而且,这样也利于团队的开发和新人的快速加入,也在系统集成时更加的方便。


  废话不多说,开始在Spring MVC中集成Swagger框架。

一、定义API接口文档

  我们不具体说明编写过程,使用Swagger提供的样例“宠物商店”(http://petstore.swagger.io/v2/swagger.json)。

二、使用代码生成工具生成Java代码

  代码构建工具Codegen(删改你介绍时有Github地址),我们先需要下载构建工具包:

wget http://central.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.0/swagger-codegen-cli-2.4.0.jar -O swagger-codegen-cli.jar

  具体使用方法,可参见其Github项目中的描述。生成代码命令:

java -jar swagger-codegen-cli-2.4.0.jar generate -i http://petstore.swagger.io/v2/swagger.json -l spring --library spring-mvc -o tmp

  参数-l时指语言类型,--library指的是使用的库,spring-mvc、spring-boot或者spring-cloud,默认生成spring-boot的代码。其中的目录截图:

  

  其中的配置目录,

  

三、引入Swagger的依赖包

 复制生成项目中pom的引用即可:

        <!--SpringFox dependencies --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${springfox-version}</version><exclusions><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${springfox-version}</version></dependency>

四、合入代码

  将api和model下面的放入对应包结构下,但是configuration中的需要重新配置。因为项目已经配置了MVC,如果直接使用,则会初始化两次mvc的信息,故不使用WebMvcConfiguration和WebApplication两个类。SwaggerUiConfiguration类为配置的入口,里面含有Swagger的配置注解,需要再初始化MVC的时候,加载这个类。SwaggerDocumentationConfig类为Swagger文档的配置类,其中有api的包路径设置,设置正确才能解析出。为了防止启动时候,初始化spring的时候加载这些配置,这些类不能放到基础扫描包里面。再spring-mvc中添加配置想,单独加载SwaggerUiConfiguration类。

五、启动并访问

  如看到这些信息,则说明启动成功,可以访问:

  访问地址:http://localhost:8080/webapp/swagger-ui.html,效果如下:

六、增加配置项,上线后禁用Swagger-UI功能

  spring-mvc.xml中配置如下:

<import resource="classpath*:springfox-${springfox.swagger.mode:default}-swagger.xml"/>

  设置VM的启动变量,-Dspringfox.swagger.mode=dev,新增springfox-dev-swagger.xml配置文件,里面加载SwaggerUiConfiguration类。

本文中的代码和配置均已提交Github:https://github.com/FlowerBirds/JavaDemoApp,可以参考。

参考文档:

  • https://swagger.io/docs/specification/about/
  • https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md
本文作者:风雨咒之无上密籍

转载于:https://www.cnblogs.com/flowerbirds/p/10324593.html

Spring MVC集成Swagger2.0相关推荐

  1. Spring MVC集成slf4j-logback

    转自: Spring MVC集成slf4j-logback 1.  Spring MVC集成slf4j-log4j 关于slf4j和log4j的相关介绍和用法,网上有很多文章可供参考,但是关于logb ...

  2. Spring MVC 集成 jackson-dataformat-xml 问题

    Spring MVC 集成 jackson-dataformat-xml 问题 HttpMessageNotWritableException Could not write content 注:如果 ...

  3. Spring MVC集成slf4j-logback - 我想跟代码谈谈 - 博客频道 - CSDN.NET

    Spring MVC集成slf4j-logback - 我想跟代码谈谈 - 博客频道 - CSDN.NET

  4. Spring MVC集成Tiles使用方法

    Spring MVC集成Tiles使用方法 转载于:https://www.cnblogs.com/zhujiabin/p/5012129.html

  5. Spring Boot 集成Swagger2生成RESTful API文档

    Swagger2可以在写代码的同时生成对应的RESTful API文档,方便开发人员参考,另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API. 使用Spring Boot可 ...

  6. Spring MVC集成Spring Data Reids和Spring Session实现Session共享

    说明:Spring MVC中集成Spring Data Redis和Spring Session时版本是一个坑点,比如最新版本的Spring Data Redis已经不包含Jedis了,需要自行引入. ...

  7. Spring MVC集成Log4j

    以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...

  8. Spring mvc集成log4j2

    前期环境 Spring mvc + Maven + Idea 一.下面开始配置log4j2,先简单演示其如何配置,再仔细了解log4j2用法. 1.1  配置pom.xml,引用log4j2相关包 & ...

  9. Java-Shiro(三):Shiro与Spring MVC集成

    新建Java Daynamic Web项目 导入Spring.SpringMVC依赖包: 导入Spring & Spring MVC包(导入如下所有开发包): Spring AOP依赖扩展包: ...

最新文章

  1. mapreduce工作流程
  2. 实现序列化与反序列化,一定要绕开这些坑!
  3. hibernate中的PO持久化对象及PO三种状态
  4. 本地图片转base64_从一道面试题说起:GET 请求能传图片吗?
  5. Python3 编程示例:斐波纳契数列
  6. Android中文API(122) —— AudioRecord
  7. LINUX国产操作系统还缺少些什么?
  8. 用C语言实现面向对象的开发
  9. 手写邮箱获取验证码注册登录功能
  10. 电商巨头Shopify 两名员工被指窃取客户交易详情
  11. 买书动态规划java_《编程之美》买书问题——动态规划
  12. 投色子--html demo
  13. Jenkins的定时构建与轮询SCM
  14. 科研的常用软件高效神器
  15. 这个可以有!百度大脑EasyDL新发布EasyData搞定AI开发中的数据管理问题
  16. yii学习笔记—gii 自动代码生成工具
  17. C++ 课程作业 类与对象2——构造函数、拷贝构造函数、析构函数(油桶题)
  18. 如何设置软件开机自动启动
  19. 无锡室内设计培训——室内的十种设计手法
  20. 安卓银行木马新增“keylogger”功能,攻击能力倍增

热门文章

  1. 外研社计算机英语试题,外研社七年级下册英语期末试卷
  2. Ubuntu 16.04+1080Ti机器学习基本环境配置【转】
  3. 详细解读Latent Diffusion Models:原理和代码
  4. 纽约大学石溪分校计算机科学,纽约州立大学石溪分校的主要基本信息介绍
  5. 【转】SPARC处理器30年沉浮
  6. OPPO手机怎样把图片拼在一起(拼图教程分享)
  7. 如何识别一个网站是正规合法的网站
  8. 测试英语词水平的软件,英语词汇量测试程序
  9. pthread之如何正确的终止正在运行的子线程
  10. jq 隔行变色(横、纵)