SpringMVC集成Swagger2

springMVC 集成 swagger2 (2.4.0) 一、pom.xml 依赖(返回json格式的数据要添加JSON处理依赖)        <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0&l... 阅读详情

1 建立基本SpringMVC工程

1.1 建立SpringMVC Maven工程

web.xml

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <description>Servlet Context</description>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-config/applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <!-- 拦截所有请求 -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

1.2 创建一个TestController

package com.study.swagger.control;

@Controller
@RequestMapping("/test")
public class TestController {

    @RequestMapping(value="/hello", method=RequestMethod.GET)
    @ResponseBody
    public String sayHello(String name){
        return "hello " + name;
    }
}

1.3 配置spring bean

applicatonContext.xml

<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<context:component-scan base-package="com.study.swagger.control" />

确保能够正常访问

2 引入Swagger2

2.1 引入Swagger2依赖

<!-- Swagger2 Dependency -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.7</version>
</dependency>

2.2 新增Swagger配置类

package com.study.swagger.config;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Impler Apis")
                .description("Impler Apis details")
                .license("copyright©impler.cn")
                .version("1.0")
                .build();
    }
}

2.3 配置swagger bean

<context:component-scan base-package="com.study.swagger.config" />

2.4 添加@ApiOperation注解

在Controller Bean中的@RequestMapping标识的方法上添加@ApiOperation注解。

package com.study.swagger.control;

@Controller
@RequestMapping("/test")
public class TestController {

    @ApiOperation(value = "sayHello")
    @RequestMapping(value="/hello", method=RequestMethod.GET)
    @ResponseBody
    public String sayHello(String name){
        return "hello " + name;
    }
}

2.5 部署启动

访问http://localhost:8080/swagger/v2/api-docs:
api-docs
返回的JSON信息中,paths对应Controller中RequestMapping配置的路径

3 引入Swagger UI

上面的配置保证了Swagger后台运作正常。Swagger UI实际就是一套完整的操作页面。可以到https://github.com/swagger-api/swagger-ui将这些静态文件下载下来,然后放到webapp根目录。但是这样显然会增加项目结构复杂度。这里采用另外一种方式,即以依赖jar包的方式引入这些静态文件。

3.1 引入Swagger UI依赖

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

该jar包的结构如下:
Swagger UI 结构
这种方式的好处就是不会对现有项目结构造成污染,配置方便。

3.2 部署启动

直接访问Swagger UI的首页:http://localhost:8080/swagger/swagger-ui.html。
Swagger UI
点开某个接口连接,输入入参信息,点击Try it Out!按钮即可。
完整示例:https://github.com/Impler/SwaggerIntegration/tree/master/swagger-simple

4 包含后缀的URL配置

上述配置的Spring DispatcherServlet拦截所有请求,包括静态资源,即url-pattern为/。但是现实中有很多将DispatcherServlet专门用来处理.do、.action等后缀结尾的请求,即。url-pattern为.do、.action。对静态资源的请求则交由default servlet来处理。
web.xml

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

经过观察网络请求发现,Swagger UI在页面加载时会发送如下4个请求:
- /swagger-resources/configuration/ui:swagger配置信息
- /swagger-resources:swagger资源路径,默认default
- /swagger-resources/configuration/security:swagger安全性信息
- /v2/api-docs:项目内的接口信息(重要)
Swagger请求
这些请求url均在swagger-ui的jar包内的静态文件中定义,我们一般不去修改。但是swagger的这些请求又需要DispatcherServlet来分发处理,所以需要为这些url配置额外的url-pattern。

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
    <!-- 为swagger配置额外的pattern-->
    <url-pattern>/v2/api-docs</url-pattern>
    <url-pattern>/swagger-resources</url-pattern>
    <url-pattern>/swagger-resources/configuration/security</url-pattern>
    <url-pattern>/swagger-resources/configuration/ui</url-pattern>
</servlet-mapping>

/v2/api-docs请求响应返回的json串的path属性中包含项目内接口的所有url信息,其实现是在springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl
Bean中,通过扫描所有Controller类中@RequestMapping注解来获取的。所以这里借助Spring强大的AOP功能,在swagger返回后台接口信息前拦截,然后在所有的接口url中拼接指定的请求后缀。

package com.study.swagger.config;

/**
 * 将接口url中追加模式后缀.do
 * @author impler
 * @date 2017年9月30日
 */
@Aspect
@EnableAspectJAutoProxy
@Component
public class SwaggerApiSuffixAspect {

    @AfterReturning(pointcut="execution(public io.swagger.models.Swagger springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl.mapDocumentation(..))",
            returning="swagger")
    public void doBeforeBussinessCheck(Swagger swagger){
        Map<String, Path> paths = swagger.getPaths();
        if(null != paths){
            Map<String, Path> newPaths = new HashMap<String, Path>(paths);
            paths.clear();
            Iterator<String> it = newPaths.keySet().iterator();
            while(it.hasNext()){
                String oldKey = it.next();
                // 添加模式后缀 .do
                String newKey = oldKey  + ".do";
                paths.put(newKey, newPaths.get(oldKey));
            }
            newPaths = null;
        }
    }
}

处理包含后缀的URL
完整示例:https://github.com/Impler/SwaggerIntegration/tree/master/swagger-suffix

SpringMVC集成Swagger2配置与前端界面实践指南 SpringMVC是Spring框架的一部分,它是一个实现了Model-View-Controller设计模式的请求驱动类型的轻量级Web框架。它通过一套注解,让POJO成为处理请求的控制器,同时将请求参数绑定到控制器的参数上。SpringMVC采用松耦合可插拔组件结构,比传统的Servlet更具有扩展性和灵活性。Swagger2通过一套简洁的注解机制,让我们能够轻松地对我们的API进行文档化。它极大地简化了RESTful API的文档编写工作,提升了API开发的效率。 阅读详情

相关推荐

SpringMVC 集成 Swagger2

SpringMVC 集成Swagger2,相关说明可以打开 https://blog.youkuaiyun.com/everyday_hzg/article/details/80537902

SpringMVC集成Swagger2,配置包含后缀的URL

目录 1、引入Swagger2依赖 2、配置spring 3、新增Swagger配置类 4、添加测试controller 5、配置web.xml 6、运行效果 1、引入Swagger2依赖 <properties> <version.swagger>2.9.2</version.swagger> </properties&gt...

天海行者的专栏 2810

【VAX 小番茄安装详细步骤】

本文详细介绍了在VS2022环境下安装Visual Assist X(番茄助手)的步骤及常见问题解决方案。主要内容包括:安装前的兼容性设置(需修改为Windows7兼容模式)、安装流程(卸载旧版本、勾选对应VS版本、替换关键dll文件)以及常见问题处理(如安装失败、工具栏图标缺失等)。文章提供了完整的下载链接和操作截图,特别强调了安装失败后的清理方法(注册表、安装目录和残余文件删除)。最后给出了安装成功后的测试运行指引。

qq_23962581的博客 1718

springmvc与swagger2整合

由于springboot整合swagger2非常简单,现在springmvc在实际的项目当中非常多,所以有必要说一下springmvc和swagger2的整合,网上参照的资料非常多,大致都说的是一样的,多次测试才成功;swagger优点:一个文件就是一个文档只针对API,而不针对特定的语言的API,很多自动生成API的工具基本都是只针对特定的API的支持Json和yaml来编写API文档,并且支持...

zhiqiang_zhao 6070

AutoCAD2016安装破解教程

AutoCAD2016安装破解教程。本人亲自实验,破解成功,有效。以64位为例。 工具/原料   笔记本电脑 AutoCAD2016安装包 AutoCAD2016注册机(xf-adsk2016_x64.exe)链接:http://pan.baidu.com/s/1cAZQA windows7/8/8.1/10-32...

weixin_33804990的博客 1万+

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

SpringMVC集成Swagger2详解

SpringMVC集成Swagger2详解 一、pom.xml引入基于ma &lt;!-- swagger --&gt;           &lt;dependency&gt;               &lt;groupId&gt;io.springfox&lt;/groupId&gt;               &lt;artifactId&gt;springfox-swagger2&...

tangshiweibbs的专栏 319

【keras】走近VGG16卷积神经网络

        VGG16是一个16层的卷积神经网络模型,输入数据的维度为224*224*3,即长宽均为224像素的RGB彩色图片,VGG16模型的权重由ImageNet训练而来。由于其具有简单实用的优点,因此,在图像分类和目标检测任务中得到了较为广泛的应用。 1.卷积神经网络的基本概念 1.1卷积         简单的将其理解为一种数学运算,具体的计算过程如下图所示:       ...

XYZ 1万+

spring mvc集成swagger2

springmvc集成swagger2,只需要三步: 1.pom.xml引入swagger &lt;!-- swagger --&gt; &lt;dependency&gt; &lt;groupId&gt;com.mangofactory&lt;/groupId&gt; &lt;artifactId&gt;swagger-springmvc&lt;/artifactId&gt; ...

u012733921的博客 436

VSCode 远程开发:实现服务器图形化界面(GUI)的高效操作指南

本文详细介绍了如何通过VSCode远程开发实现服务器图形化界面(GUI)操作,包括X11转发原理、完整配置指南和实战测试。通过安装Xming、配置SSH连接和服务器端设置,开发者可以高效地在本地显示远程GUI应用,提升开发效率。

weixin_29245767的博客 292

Zynq UltraScale+网络加速方案:用AXI Ethernet Subsystem实现2.5G吞吐量的配置秘籍

本文详细介绍了在Xilinx Zynq UltraScale+平台上使用AXI Ethernet Subsystem实现2.5Gbps网络吞吐量的配置方法。通过硬件设计优化、Vivado工程配置、Linux驱动调优及性能测试等关键步骤,为工业视觉和5G前传等高速网络应用提供可靠解决方案。

weixin_30485379的博客 614

在SpringMVC中集成Swagger2

为什么要使用Swagger2 在SpringMVC中集成Swagger2 引入依赖 添加Swagger2配置类 让Spring加载Swagger2配置类 访问Swagger2 为什么要使用Swagger2   在现在的项目开发中,后端越来越多的倾向于只提供api接口,而不进行页面等的搭建,编写操作,无论是采用前后端分离的开发模式,还是给移动端提供api接口等都是如此。而...

ZZY1078689276的专栏 632

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

BSW的看门狗功能

雪云飞星的博客 1万+

SpringMvc 集成swagger2

本人刚接触到swagger2,如有什么不足的地方,希望大神帮我指出,谢谢

zhangjun19900306的博客 2061

SAP GR(Group Reporting)合并报表内容及功能简介(五)-合并和抵消

随着合并和收购数量的显著增加,企业在全球经济中面临着诸多挑战。其中最常见的是法律实体与子公司之间缺乏透明度,导致无法以经济高效的方式对账法律实体与子公司之间的公司间交易,从而造成结算出现重大延迟。公司间匹配和对账功能允许用户在关账过程中进行早期分析,以避免公司间差异,并缩短关账时的延迟。公司间匹配和对账功能交易级别匹配和实时对账基于各种组织维度(如公司、利润中心和合并单位)的灵活建模自动差异解决。应用内通信和工作流。与公司间抵销集成。

weixin_43853754的博客 4400

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringMVC集成Swagger2,初尝试和遇到的相关问题

之前项目的接口文档都是手动编写Word文档来做,制作成本较高,并且在进行版本迭代的时候进行标注和说明不是很方便,后来发现Swagger之后进行了简单的操作。 截止目前还未深度使用,本文仅记录初次使用Swagger的过程和遇到的问题,后续进行补充。 前言: 当前项目使用SpringMVC,集成Swagger2 Step1: 添加依赖包 io.spr

MikeLC7的博客 8898

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Swagger2之springMVC的简单集成

搭建一个springMVC的demo工程 demo工程中pom.xml配置 &lt;!-- 接口文档和UI --&gt; &lt;dependency&gt; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &lt;artifactId&gt;springfox-swagger2&lt;/artifactId...

sunnyJam的专栏 390

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

关于SpringMVC项目集成Swagger2

SpringMVC集成Swagger2的注意事项(非Spring boot)

AIDA64SS的博客 529

springMVC4集成swagger2

本帖子使用的组件版本: Spring 4.2.1.RELEASE Swagger 2.4.0 1.Swagger介绍: Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 ============

莫问前程 748

SpringMVC 集成Swagger2

Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。之前用swager1 集成过,无意间看到swagger2比swagger1强大很多,则没啥事就玩玩Spring MVC 集成Swagger2,言归正传,往下看。集成Swageger2有几步    在pom.xml中添加相关jar&lt;dependency&gt; &lt;groupId&gt;io.springfox...

everyday_hzg的专栏 629

SpringMVC集成Swagger2生成在线API文档

SpringMVC集成Swagger2生成在线API文档 上一篇文章中讲解了SpringBoot集成Swagger2构建在线API文档,大家可以去看看 今天详细介绍一下SpringMVC集成swagger2 一、代码集成 pom.xml <!-- swagger2配置 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfo

博客 183

SpringMVC集成springfox-swagger2学习笔记

SpringMVC集成springfox-swagger2 依赖管理 在整合之前,需要把所有使用到的依赖包全部引入。网上很多文章只是简单告诉读者引入swagger-springmvc-1.0.2.jar包,但是随后你发现这远远不够,还需要很多包,(这里只记录跟swagger相关的jar包,spring的包这里就不展示了)如下所示: <dependency> <groupId>io.springfox</groupId>

su_zeb的博客 481
上一篇: SpringMVC集成Swagger2
下一篇: Windows 环境下编译Hadoop源码
Impler
博客等级 码龄8年 4粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值