SpringMvc 集成构建 Swagger

原创 2018年04月15日 22:52:36

Springmvc项目中集成Swagger。

步骤

一,

maven的pom片段:   下面的swagger 1 与 swagger 2 的配置都可以, 参照一部分就可以,都能跑起来。

————————————————————————————————

<!-- swagger 1 -->

<dependency>
   <groupId>com.mangofactory</groupId>
   <artifactId>swagger-springmvc</artifactId>
   <version>1.0.2</version>
   <!-- swagger-springmvc 依赖spring-web 3.*.*, 与原工程spring-web:4.3.9冲突,排除原来的依赖版本 -->
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
      </exclusion>
   </exclusions>
</dependency>
<dependency>
   <groupId>com.mangofactory</groupId>
   <artifactId>swagger-models</artifactId>
   <version>1.0.2</version>
   <!-- swagger-springmvc 依赖spring-web 3.*.*, 与原工程spring-web:4.3.9冲突,排除原来的依赖版本 -->
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
      </exclusion>
   </exclusions>
</dependency>
<dependency>
   <groupId>com.wordnik</groupId>
   <artifactId>swagger-annotations</artifactId>
   <version>1.3.11</version>
   <!-- swagger-springmvc 依赖spring-web 3.*.*, 与原工程spring-web:4.3.9冲突,排除原来的依赖版本 -->
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
      </exclusion>
   </exclusions>
</dependency>
<!-- swagger-springmvc dependencies -->
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-core</artifactId>
   <version>2.5.4</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-annotations</artifactId>
   <version>2.5.4</version>
</dependency>
<dependency>
   <groupId>com.google.guava</groupId>
   <artifactId>guava</artifactId>
   <version>15.0</version>
</dependency>
<dependency>
   <groupId>com.fasterxml</groupId>
   <artifactId>classmate</artifactId>
   <version>1.1.0</version>
</dependency>

<!-- swagger 2 -->
<dependency>
   <groupId>com.mangofactory</groupId>
   <artifactId>swagger-springmvc</artifactId>
   <version>1.0.2</version>
   <!-- swagger-springmvc 依赖spring-web 3.*.*, 与原工程spring-web:4.3.9冲突,排除原来的依赖版本 -->
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
      </exclusion>
   </exclusions>
</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.6.0</version>
</dependency>

————————————————————————————————

二,

springmvc的xml文件中加入以下配置。

1, 注册Swagger相关类文件。

<!-- 将 springSwaggerConfig加载到spring容器 -->
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
<!-- 将自定义的swagger配置类加载到spring容器 -->
<bean class="com.zstimes.riskManage.util.controller.SwaggerConfig" />

————————————————————————————————

2,对静态访问的配置,不被springmvc所拦截。

<!-- 对静态资源文件的访问 -->
<mvc:resources mapping="/swagger/**" location="/swagger/" />

————————————————————————————————

三,创建Swagger配置类,SwaggerConfig.java, 与容器定义的bean路径(上面二的部分)要保持一致。 还有一个测试的Controller类。

SwaggerConfig.java:

package com.zstimes.riskManage.util.controller;

import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.models.dto.ApiInfo;
import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;

/**
 * Created by zzd on 2018/4/15.
 */
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(
                "Swagger",
                "SpringMvc-API swagger测试",
                "Apps API",
                "RTHD",
                "web app",
                "Apps API License URL");
        return apiInfo;
    }
}

Controller片段:

@Api(value = "user")
@Controller
@RequestMapping("/user")
public class UserController extends AbstractBaseController{
	private static final Logger LOGGER = LogUtil.get();
	

	@Autowired
	private BenQiYeService benQiYeService;

	/**
	 * 
	 * @Title: find 
	 * @Description: 测试
	 * @param req
	 * @return
	 * @return: AjaxResult
	 */
	@RequestMapping(value = "/findPageByCondition",produces = "application/json;charset=UTF-8")
	@ResponseBody
	@ApiOperation(value = "CESI",HhttpMethod="POST",notes="get user by id")


四, 与Swagger-UI整合 

配置了扫描哪些接口,Swagger会把这些接口生成json格式的文档,json文档直接看很不人性化,所以用这个Swagger-UI把json格式的文档转成页面! 

1)Swagger-UI官网git下载版本2.10:

下载地址:https://github.com/swagger-api/swagger-ui/tree/v2.2.10

其他版本没都试过, 版本不对会出现以下问题: 页面正常显示,但是就不出现接口文档,然后下面是这句话。

 No operations defined in spec!



下载这里面的dist文件夹,把文件夹整个拷贝到你项目工程的webapp的swagger下,swagger自己创建的,这个目录可以自行定义。
2)找到dist文件夹下的index.html文件,把大概第40行的url改成url = “http://localhost:8080/项目名称/api-docs”;注意这个api-docs是固定的,不要改! 


五,启动项目 

浏览器输入http://域名:端口/项目名/dist/index.html 就看到效果了,成功!





整合时遇到的问题:

1,因为是集成到现有的项目中,现有的项目的spring-web是4.3.9, 但是Swagger-springmvc依赖是的spring-web3.*.*的jar,所以exclusion排除一下。

2,就是整合Swagger-UI的时候发生版本上面说的问题。 目前用的版本是 v2.2.10


springmvc与swagger swagger-ui 集成demo

  • 2016年06月22日 17:05
  • 9.05MB
  • 下载

SpringMVC集成Swagger

  • 2017年02月28日 19:39
  • 28KB
  • 下载

SpringMVC集成springfox-swagger2构建restful API

在集成springfox-swagger2之前,我也尝试着集成了swagger-springmvc,方式差不多,但是swagger-springmvc相对麻烦一点,因为要把它的静态文件copy到自己的...
  • u014231523
  • u014231523
  • 2017-01-13 18:11:02
  • 14322

Spring4集成Swagger:真的只需要四步,五分钟速成

如果你所在的公司的还没有使用swagger甚至没有听说过swagger,赶快学习一下我的这篇博客吧,五分钟速成,傻瓜式的集成,但就是这么简单的应用一定会让他们震惊到的。 首先对swagger做一个简介...
  • BlackMambaProgrammer
  • BlackMambaProgrammer
  • 2017-05-16 22:30:35
  • 7752

swagger整合spring mvc教程

前文:          在日常工作中,开发人员经常会遇到写接口文档的工作,一般都是word文档,不仅书写起来麻烦、格式不优美,在日常的维护中也带来很大的成本,源代码的修改,都要响应修改api文档。后...
  • wangjun5159
  • wangjun5159
  • 2015-08-04 22:31:07
  • 11514

swagger整合springMVC源码

  • 2016年10月10日 14:23
  • 159KB
  • 下载

springMVC整合swagger(亲自试验完全可用)

swagger是什么: Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内...
  • y534560449
  • y534560449
  • 2016-12-16 16:35:09
  • 19032

SpringMVC整合Swagger框架

Swagger可视化API,不仅能查看API,还能测试。 第一步:项目中引入相关jar包: .... com.mangofactory ...
  • Tongdao
  • Tongdao
  • 2015-12-07 12:03:28
  • 4554

swagger+springmvc接口在线文档完美整合

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。Swagger是世界上最大的API开发框架,它能使后端的接口形成API文档。使用Swagger可以让...
  • Lixuanshengchao
  • Lixuanshengchao
  • 2017-08-16 16:47:31
  • 972
收藏助手
不良信息举报
您举报文章:SpringMvc 集成构建 Swagger
举报原因:
原因补充:

(最多只允许输入30个字)