SpringMVC中使用Swagger2整合
来源:互联网 发布:网上开淘宝 编辑:程序博客网 时间:2024/06/05 20:38
1.关于 Swagger
Swagge的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者
不能通过网络流量检测的情况下能发现和理解各种服务的功能。当服务通过Swagger定义,消费者就能与远程的服务
互动通过少量的实现逻辑。类似于低级编程接口,Swagger去掉了调用服务时的很多猜测
Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因:
- Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。
- Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。
- Swagger 文件可以在许多不同的平台上从代码注释中自动生成。
- Swagger 有一个强大的社区,里面有许多强悍的贡献者。
2.搭建基于maven的springmvc项目
2.1.创建maven项目
具体细节和过程可以参考之前的文章“搭建SpringMVC+Spring3+Hibernate4框架的maven项目”的前段部分
2.2.集成springmvc:
我们在web.xml文件里面添加下面的配置:
2.2.1配置监听器
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener>
2.2.2 配置过滤器,解决POST乱码问题
<filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param></filter><filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
2.2.3配置SpringMVC分发器,拦截所有请求
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>namespace</param-name> <param-value>dispatcher-servlet</param-value> </init-param></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
我们需要在WEB-INF的根目录下新建一个dispatcher-servlet.xml文件2.2.4编写dispatcher-servlet.xml
配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 注解扫描包 --> <context:component-scan base-package="com.pengtu.swagger.controller" /> <!-- 开启mvc注解 --> <mvc:annotation-driven ></mvc:annotation-driven> <!-- 静态资源过滤 --> <mvc:resources location="/resources/" mapping="/resources/**"/> <!-- JSP视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> <!-- prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀), 比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/views/hello.jsp” --> </bean> <!-- 上传文件时需要做的配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8" /> <property name="maxUploadSize" value="10485760000" /> <property name="maxInMemorySize" value="40960" /> </bean> </beans>
如果现在启动的话 会报错: 缺少applicationContext.xml文件
Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
它说我们在WEB-INF下面少了一个applicationContext.xml 这个文件,原来,我们少了对SpringBean工厂的配置,它的意思就是说,我们要规定一下,在Spring容器启动的时候,需要自动加载哪些东西?
于是,我们把 applicationContext.xml 加上
2.2.5 添加 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd "></beans>
启动没问题3.集成swagger
3.1 引入swagger相关包-- pom.xml配置
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.4.0</version> </dependency>
3.2 在dispatcher-servlet.xml中添加映射静态的配置
<mvc:default-servlet-handler />
3.3 创建swagger2的配置类
package com.pengtu.swagger.utils;import org.springframework.beans.factory.annotation.Configurable;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;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;@EnableSwagger2 //使swagger2生效 @ComponentScan(basePackages = {"com.pengtu.swagger.controller"}) //需要扫描的包路径 @Configurable //配置注解,自动在本类上下文加载一些环境变量信息 public class RestApiConfig extends WebMvcConfigurationSupport { @Bean public Docket buildDocket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(buildApiInf()) .select() .apis(RequestHandlerSelectors.basePackage("com.pengtu.swagger.controller"))//controller路径 .paths(PathSelectors.any()) .build(); } private ApiInfo buildApiInf(){ return new ApiInfoBuilder() .title("SpringMVC中使用Swagger2整合") .termsOfServiceUrl("http://blog.csdn.net/zhang289202241") .description("springmvc swagger2") .contact(new Contact("张磊", "http://blog.csdn.net/zhang289202241", "289202241@qq.com")) .build(); }}
3.4 在dispatcher-servlet.xml中添加swagger2配置类
<bean class="com.pengtu.swagger.utils.RestApiConfig" />
最后 dispatcher-servlet.xml的内容为:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 注解扫描包 --> <context:component-scan base-package="com.pengtu.swagger.controller" /> <!-- 开启mvc注解 --> <mvc:annotation-driven ></mvc:annotation-driven> <!-- 静态资源过滤 --> <mvc:resources location="/resources/" mapping="/resources/**"/> <mvc:default-servlet-handler /> <bean class="com.pengtu.swagger.utils.RestApiConfig" /> <!-- JSP视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> <!-- prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀), 比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/views/hello.jsp” --> </bean> <!-- 上传文件时需要做的配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8" /> <property name="maxUploadSize" value="10485760000" /> <property name="maxInMemorySize" value="40960" /> </bean> </beans>
3.5 创建对应的userController控制类
package com.pengtu.swagger.controller;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiParam;import io.swagger.annotations.ApiResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.pengtu.swagger.entity.User;@Controller@RequestMapping("/user")@Api(value = "user-api", description = "有关于用户的CURD操作") public class UserController {@RequestMapping("/getUser")@ApiOperation(value="获取用户信息",notes = "get userinfo",httpMethod = "POST")public String getUser(){System.out.println("haha");return "userInfo";}@ApiResponse(code = 200, message = "success", response = User.class) @ApiOperation(value = "获取用户对象", httpMethod = "GET", response = String.class, notes = "根据用户名获取用户对象") @RequestMapping(value = "apiGetId", method = RequestMethod.GET, produces = "application/json") @ResponseBody public Object getId(@ApiParam(name = "id", required = true, value = "用户Id") @RequestParam("id") String id) {User user = new User();user.setUserName("zhanglei");user.setPassword("123456"); return user; }}
项目最后的目录图:
我的url: http://localhost:8888/swagger/swagger-ui.html
然后就可以看到效果图:
在controller中涉及到的api相关注解可以参考文章: http://blog.csdn.net/luohongtucsdn/article/details/74043676
源代码下载: 链接: https://pan.baidu.com/s/1pKYBeVD 密码: ut59
阅读全文
1 0
- SpringMVC中使用Swagger2整合
- springmvc+swagger2整合
- springmvc 整合 swagger2
- SpringMVC整合Swagger2
- SpringMVC整合swagger2
- SpringMVC + Swagger2 的使用
- SpringMVC中使用FastJsonHttpMessageConverter时Swagger2失效的解决办法
- swagger2 与 springmvc 整合 生成接口文档
- 如何整合SpringMVC和Swagger2,并且使用Mock数据进行联调
- 在springboot中整合jersey和springfox-swagger2
- springboot中使用swagger2管理测试api
- 在 spring mvc 中使用 swagger2
- Spring MVC 整合 Swagger2
- Spring Boot整合Swagger2
- spring boot整合Swagger2
- SpringBoot整合Swagger2
- spring boot 整合Swagger2
- Swagger2+SpringMVC配置详解
- Ajax前台姓名和身份证号正则验证
- Python3 对网页进行简单爬虫操作
- Vue.js解析(三)【从Vue.js源码角度再看数据绑定】
- 【实例讲解】TensorFlow中TFRecord关键点
- 深入理解javascript原型和闭包(8)——简述【执行上下文】上
- SpringMVC中使用Swagger2整合
- 2017CPSE安博会高端访谈—专访千视通副总李宁、产品总监王景辉
- 透过源码学习集合框架之ArrayList
- 腾讯的SQL on Storm,与Pike设计目标很相似
- 流式布局控件的编写
- 图解CSS3核心技术与案例实战(第七章CSS3盒模型)
- android Fragmentation框架源码全面解析一
- GUI
- FAILED: Fetch statement failed: Encoding or code set not supported