SpringMVC整合SpringFox实践总结
项目中使用的swagger框架在生成api文档时存在一些问题:
1、 控制器下方法无法点击展开
2、api内容结构混乱
基于上述原因,重新整合重构了一下api文档生成的代码。在此将重整过程记录下来,方便后续查看。
Maven依赖引入
要整合SpringFox所需的依赖如下:
<!--springfox-swagger需要的最小依赖 start-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<!--jackson用于将springfox返回的文档对象转换成JSON字符串-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${version.jackson}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${version.jackson}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${version.jackson}</version>
</dependency>
<!--petStore是官方提供的一个代码参考, 可用于后期写文档时进行参考, 可不加-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-petstore</artifactId>
<version>2.5.0</version>
</dependency>
<!--最小依赖 end-->
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
由于项目框架版本限制,此处只使用2.6版本的SpringFox。另外,根据项目实际情况解决依赖冲突。
添加swagger配置类
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Tag;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author yanzy
* @description api文档配置类
* @date 2018-03-27 14:55
* @created by intelliJ IDEA
*/
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig{
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("api") // 组名
.tags(new Tag("SMR-Services","xxx控制器"),
new Tag("Shiro-Services","xxx控制器"))
.select() // 选择哪些路径和api会生成document
.apis(RequestHandlerSelectors.basePackage("packageName"))//// 对packageName包中的api进行监控
.paths(PathSelectors.any()) // regex, ant, any (default), none 格式:PathSelectors.any()
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SDD api navigation")//You application title. Required.
.description("API Document")//API description. Arbitrary text in CommonMark or HTML.
.version("1.0.0")//API version. You can use semantic versioning like 1.0.0, or an arbitrary string like 0.99-beta. Required.
.termsOfServiceUrl("no terms of service")//Link to the page that describes the terms of service.Must be in the URL format.
.license("Apache 2.0")//Name of the license.
//.contact(new Contact("yanzy","","yanzy@dist.com.cn"))//Contact information: name, email, URL.
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")//A URL to the license description.
.build();
}
@Bean
UiConfiguration uiConfiguration() {
UiConfiguration uiConfiguration = new UiConfiguration(null);
return uiConfiguration;
}
}
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
49
50
51
52
53
此处特别注意tags的使用,上述问题2中无法点击展开控制器下方法就是由于在控制器的@Api标签中使用tags参数导致的。
SpringMVC的XML配置文件相关配置
<!-- Swagger config配置类的路径,注意放在此处,否则生成不了api doc -->
<bean class="dist.dgp.configs.SwaggerConfig"/>
<!--下面两个是静态资源访问配置-->
<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
1
2
3
4
具体使用用例
import dist.dgp.bll.impls.smr.SMRMaterialServiceImpl;
import dist.dgp.model.smr.pos.MaterialPo;
import io.swagger.annotations.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @author yanzy
* @description
* @date 2018-04-11 14:42
* @created by intelliJ IDEA
*/
@RestController
@RequestMapping("materialController")
@Api
@Data
@Slf4j
public class MaterialService {
@Autowired
SMRMaterialServiceImpl smrMaterialService;
@RequestMapping(value = "/create",method = {RequestMethod.POST})
@ApiOperation(tags = {"SMR-Services"},value = "Material-新建")
@ApiImplicitParams({
@ApiImplicitParam(name = "materialPo", value = "资料报告对象", required = true, paramType = "RequestBody", dataType = "MaterialPo")
})
@ApiResponses({
@ApiResponse(code = 200,message = "OK",response = boolean.class),
@ApiResponse(code = 400,message = "FAULT",response = boolean.class)
})
public boolean create(@RequestBody MaterialPo materialPo){
return this.smrMaterialService.createMaterial(materialPo);
}
@RequestMapping(value = "/saveorupdate",method = {RequestMethod.POST})
@ApiOperation(tags = {"SMR-Services"},value = "Material-保存或更新",notes = "根据\"id\"是否已存在来判断是保存还是更新")
@ApiImplicitParams({
@ApiImplicitParam(name = "materialPo", value = "资料报告对象", required = true, paramType = "body", dataType = "MaterialPo")
})
public boolean saveorupdate(@RequestBody MaterialPo materialPo){
return this.smrMaterialService.saveOrUpdateMaterial(materialPo);
}
}
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
最终显示结果为:
按照上述过程操作完,你就能得到一个swagger api document了,访问地址如下:
[ip]:[port]/../swagger-ui.html
本篇内容为对springfox的基本使用,细节将在日后慢慢补充。
---------------------
版权声明:本文为CSDN博主「焱魔王」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yzy199391/article/details/79913011
SpringMVC整合SpringFox实践总结的更多相关文章
- SpringMVC、SpringFox和Swagger整合项目实例
目标 在做项目的时候,有时候需要提供其它平台(如业务平台)相关的HTTP接口,业务平台则通过开放的HTTP接口获取相关的内容,并完成自身业务~ 提供对外开放HTTP API接口,比较常用的是采用Spr ...
- eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...
- MP实战系列(十)之SpringMVC集成SpringFox+Swagger2
该示例基于之前的实战系列,如果公司框架是使用JDK7以上及其Spring+MyBatis+SpringMVC/Spring+MyBatis Plus+SpringMVC可直接参考该实例. 不过建议最好 ...
- (转)Dubbo与Zookeeper、SpringMVC整合和使用
原文地址: https://my.oschina.net/zhengweishan/blog/693163 Dubbo与Zookeeper.SpringMVC整合和使用 osc码云托管地址:http: ...
- SSM整合(三):Spring4与Mybatis3与SpringMVC整合
源码下载 SSMDemo 上一节整合了Mybatis3与Spring4,接下来整合SpringMVC! 说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目! 本节全部采用 ...
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...
- springmvc整合fastjson
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
原文链接:http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服 ...
- 160906、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...
随机推荐
- kubernetes容易混淆的几个端口
k8s服务的配置文件中几个端口参数,nodePort.port.targetPort,刚开始的时候不理解什么意思很容易混淆写错,这里总结一下,概括来说就是nodePort和port都是k8s的serv ...
- 使用Tarjan进行缩点(有向图)
int From[maxn], Laxt[maxn], To[maxn << 2], Next[maxn << 2], cnt; int low[maxn], dfn[maxn ...
- java8 stream两个集体交集、差集、并集操作
业务场景: 页面左右两个datagrid,双击左边datagrid行,移动到右边datagrid,右边datagrid行双击,移动到左边datagrid 点击保存,提交修改的数据到后台 后台要把查询到 ...
- 解决安卓app在真机上的无法登录问题
和小伙伴用安卓做的app在模拟器上可以正常使用,但是变成apk发到手机上下载使用时,出现无法的登录问题,而且登录提示的错误出现一秒就消失了,无法看清. 于是找了一下老师帮忙,老师是通过在电脑主机上插入 ...
- hdu3715 Go Deeper[二分+2-SAT]/poj2723 Get Luffy Out[二分+2-SAT]
这题转化一下题意就是给一堆形如$a_i + a_j \ne c\quad (a_i\in [0,1],c\in [0,2])$的限制,问从开头开始最多到哪条限制全是有解的. 那么,首先有可二分性,所以 ...
- sql random string
begindeclare chars_str varchar(62) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123 ...
- Java 正则表达式获取两个字符中间的内容
利用 正则表达式 获取两个字符串中间的值 直接上代码吧,不是很难. public static void main(String[] args) { // 内容 String value = &quo ...
- SpringBoot集成Druid实现监控
application.properties文件完整信息 #连接数据库 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spri ...
- shell爬取斗图网
#!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num page_num=${page_num:-} echo $page_num re ...
- webuploader+上传文件夹
在web项目中上传文件夹现在已经成为了一个主流的需求.在OA,或者企业ERP系统中都有类似的需求.上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便.能够提供更高级的应用支撑. ...