SpringMVC与Swagger 整合
Swagger简介:
- Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。
- Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
首先添加swagger依赖(maven管理):
- <!-- swagger -->
- <dependency>
- <groupId>com.mangofactory</groupId>
- <artifactId>swagger-springmvc</artifactId>
- <version>1.0.2</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>2.5.1</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.5.1</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>2.5.1</version>
- </dependency>
创建自定义swagger初始化配置文件:
- package com.ksf.server.util;
-
import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
-
import com.mangofactory.swagger.models.dto.ApiInfo;
- import com.mangofactory.swagger.plugin.EnableSwagger;
-
import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import
org.springframework.context.annotation.Bean;
-
import
org.springframework.context.annotation.ComponentScan;
-
import
org.springframework.context.annotation.Configuration;
-
import
org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
/**
- * 描述:
-
*
@author Idowww.
-
*
@date 2017/01/27.
-
*/
- @Configuration
- @EnableSwagger
-
@EnableWebMvc
- @ComponentScan({"com.mangofactory.swagger"})
- public class SwaggerConfig {
- private SpringSwaggerConfig springSwaggerConfig;
- /**
- * Required to autowire SpringSwaggerConfig
- */
- @Autowired
- public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig)
- {
- this.springSwaggerConfig = springSwaggerConfig;
- }
- /**
- * Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc
- * framework - allowing for multiple swagger groups i.e. same code base
- * multiple swagger resource listings.
- */
- @Bean
- public SwaggerSpringMvcPlugin customImplementation()
- {
- return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
- .apiInfo(apiInfo())
- .includePatterns(".*");
- }
- private ApiInfo apiInfo()
- {
- ApiInfo apiInfo = new ApiInfo(
- "KSF ACT",
- "康师傅二维码促销模块, 项目基础目录是 /server/ , /b/ 目录是店铺端的接口, /c/ 目录是客户端的接口",
- "开发者:Idowww",
- "[email protected]",
- "MIT License",
- "/LICENSE");
- return apiInfo;
- }
- }
- <!-- 启用MVC注解 -->
- <mvc:annotation-driven />
- <!-- 将 springSwaggerConfig加载到spring容器 -->
- <bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
- <!-- 将自定义的swagger配置类加载到spring容器 -->
- <bean class="com.ksf.server.util.SwaggerConfig" />
- package com.ksf.server.controller.b;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import com.ksf.server.bean.session.ShopUserBean;
- import com.ksf.server.consts.ResCode;
- import com.ksf.server.dto.BaseReq;
- import com.ksf.server.dto.BaseRes;
- import com.ksf.server.dto.b.RedPackageListRespBean;
- import com.ksf.server.dto.b.RedPackageReqBean;
- import com.ksf.server.service.RedPackageService;
- import com.mangofactory.swagger.annotations.ApiIgnore;
- import com.wordnik.swagger.annotations.ApiOperation;
- @Api(value="redPackage")
- @Controller
- @RequestMapping(value="/b/redPackage")
- public class UserController {
- @Autowired
- private RedPackageService redPackageService;
- @RequestMapping(value = "/queryRedpackageList")
- @ResponseBody
- @ApiOperation(value = "公众号获取红包列表的接口", notes = "公众号获取红包列表的列表", httpMethod = "POST")
- public BaseRes<RedPackageListRespBean> list(@RequestBody BaseReq<RedPackageReqBean> req, @ApiIgnore BaseRes<RedPackageListRespBean> res,@ApiIgnore ShopUserBean shopUserBean) {
- RedPackageReqBean reqBean = req.getRequest();
- if (reqBean == null) {
- return res.setRes(ResCode.ARGS_ERROR.getCode(), "请求参数不能为空");
- }
- Long shopId = shopUserBean.getShopAssistant().getId();
- RedPackageListRespBean respBean = redPackageService.listRedPackageRecord(reqBean,shopId);
- res.setResponse(respBean);
- res.setCode(ResCode.OK.getCode());
-
res.setDes(ResCode.OK.getDes());
- return res;
-
}
- }
在GitHub上将SwaggerUi下载,地址:https://github.com/swagger-api/swagger-ui
解压后将dist文件夹中所有的文件拷贝到webapp/swagger这里的swagger是自定义的,可以写成自己创建的目录。
修改index.html中的 http://petstore.swagger.wordnik.com/v2/swagger.json修改为自己项目路径+api-docs,例如:http://localhost:8080/server/api-docs:server为项目名称。
在spring-mvc.xml中过滤掉swagger-ui的文件:
- <!-- 静态资源文件,不会被Spring MVC拦截 -->
- <mvc:resources mapping="/swagger/**" location="/swagger/" />
在浏览器中访问:http://localhost:8080/server/swagger/index.html#/b/redPackage/queryRedpackageList
相关推荐
- drools与Maven项目整合实例(2)-商城积分规则
- swagger与spring使用的方式
- 三星加大押注比特币,与美国Gemini交易所进行整合,提供比特币等加密货币交易服务...
- springMvc+spring 整合 websocket
- Tomcat与SpringMVC结合分析
- myeclipse与maven整合、测试
- SpringBoot自学好几天 中途开始写笔记 SpringBoot与检索 ElasticSearch - jest 整合 20190302
- spring+springMVC+mybatis的整合 part5
- 功能强大的swagger-editor的介绍与使用
- Spring与Mybatis框架整合的那点事(1)!
- 为Windows添加dig等DNS工具(转载,亲测可用)
- idea离线使用jrebel(亲测可用)