pom.xml 导入jar

jar包 所属 备注
spring-core spring spring核心包
spring-expression spring spEl表达式
spring-beans spring spring bean
spring-context spring spring上下文
spring-context-support spring email/scheduler/freemarker支持
spring-orm spring orm支持
spring-jdbc spring jdbc支持
spring-web spring springmvc支持 一般用到监听器加载applicationconfig.xml
spring-webmvc spring spring mvc
spring-data-jpa spring ORM框架,依赖于hibernate支持
io.swagger.swagger-core swagger swagger核心包
com.fasterxml.classmate swagger swagger依赖包
com.google.guava.guava swagger swagger依赖包,google公司开发jar包
io.springfox.springfox-swagger2 swagger swagger依赖包
io.springfox.springfox-swagger-ui swagger swagger ui包
com.github.caspar-chen.swagger-ui-layer swagger swagger-ui-layer 是替换swagger ui一个包,另外一种展现形式,但是这个包对应服务端响应状态码,不是200的话,无法显示json串,解决办法:下载源码,修改源码打包,然后放到maven的私服中,在下载到本地

配置spring-mvc.xml文件

<mvc:resources mapping="docs.html" location="classpath:/META-INF/resources/"/>
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/>
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>
<mvc:default-servlet-handler/>

docs.html: 是映射swagger-ui-layer文件jar里面的/META-INF/resources/这个目录下docs.html

swagger-ui.html:是映射swagger-ui文件jar里面的/META-INF/resources/这个目录下docs.html

/webjars/**:映射到swagger-ui文件里面这个/META-INF/resources/webjars/目录下

注意点:这里用到spring mvc默认的servlet,这个是专门来处理静态资源的,在spring-mvc配置文件里面增加

mvc:default-servlet-handler,或者在web.xml文件里面配置也行,配置如下:

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>*.jpg</url-pattern>

</servlet-mapping>

新建SwaggerConfig配置java类文件

@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan(basePackages = {包路径})
public class SwaggerConfig {

   @Bean
   public Docket customDocket() throws IOException, UNAuthorizedCallerException {
       //这里判断是线上还是线下,这里我用的是枚举,需要自己写两个值 ONLINE(0),OFFLINE(1),增加 valueOf方法
       if(SwaggerEnvEnum.valueOf(edufeSetting.getEnableSwagger()) == SwaggerEnvEnum.ONLINE) {
           return new Docket(DocumentationType.SWAGGER_2)
                  .apiInfo(apiInfoOnline())
                  .select()
                  .paths(PathSelectors.none())
                  .build();
      }else {
           return new Docket(DocumentationType.SWAGGER_2)
                  .genericModelSubstitutes(DeferredResult.class)
                  .useDefaultResponseMessages(false)
                  .forCodeGeneration(false)
                  .pathMapping("/")
                  .select()
                  .build()
                  .apiInfo(apiInfo());
      }
  }

   /**
    * 开发和测试环境使用
    * @return
    */
   private ApiInfo apiInfo() {

       Contact contact = new Contact("XX测试接口", "http://www.baidu.com/");
       return new ApiInfoBuilder()
              .contact(contact)
              .title("XX接口")
              .description("接口描述")
              .version("1.0.0")
              .build();
  }

   /**
    * 预生成环境使用
    * @return
    */
   private ApiInfo apiInfoOnline() {
       return new ApiInfoBuilder()
              .title("")
              .description("")
              .license("")
              .licenseUrl("")
              .termsOfServiceUrl("")
              .version("")
              .contact(new Contact("","", ""))
              .build();
  }
}

swagger常用的注解配置

常用注解:

  • @Api()用于类; 表示标识这个类是swagger的资源

  • @ApiOperation()用于方法; 表示一个http请求的操作

  • @ApiParam()用于方法,参数,字段说明; 表示对参数的添加元数据(说明或是否必填等)

  • @ApiModel()用于类 表示对类进行说明,用于参数用实体类接收

  • @ApiModelProperty()用于方法,字段 表示对model属性的说明或者数据操作更改

  • @ApiIgnore()用于类,方法,方法参数 表示这个方法或者类被忽略

  • @ApiImplicitParam() 用于方法 表示单独的请求参数

  • @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam

  • 具体使用举例说明: @Api() 用于类;表示标识这个类是swagger的资源 tags–表示说明 value–也是说明,可以使用tags替代 但是tags如果有多个值,会生成多个list

  • @ApiOperation() 用于方法;表示一个http请求的操作 value用于方法描述 notes用于提示内容 tags可以重新分组(视情况而用) @ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等) name–参数名 value–参数说明 required–是否必填

  • @ApiModel()用于类 ;表示对类进行说明,用于参数用实体类接收 value–表示对象名 description–描述 都可省略

    @ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 value–字段说明 name–重写属性名字 dataType–重写属性类型 required–是否必填 example–举例说明 hidden–隐藏

  • @ApiIgnore()用于类或者方法上,可以不被swagger显示在页面上 比较简单, 这里不做举例

    • @ApiImplicitParam() 用于方法

    • 表示单独的请求参数

    • @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam

    • name–参数ming

    • value–参数说明

    • dataType–数据类型

    • paramType–参数类型

    • example–举例说明

    参考博客:http://blog.csdn.net/u014231523/article/details/76522486

spring mvc和swagger整合的更多相关文章

  1. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  2. Spring MVC、MyBatis整合文件配置详解

    Spring:http://spring.io/docs MyBatis:http://mybatis.github.io/mybatis-3/ Building a RESTful Web Serv ...

  3. 调试SPRING MVC(或者整合SSH)的时候遇到了org/objectweb/asm/Type

    调试SPRING MVC(或者整合SSH)的时候遇到了org/objectweb/asm/Type 解决方法1: 原因是Spring中的cglib-nodep-2.x.x.jar与Hibernate中 ...

  4. Mybaits-从零开始-Spring、Spring MVC、MyBatis整合(未万待续)

    Spring.Spring MVC.MyBatis整合(未万待续)

  5. 【FreeMarker】Spring MVC与FreeMarker整合(二)

    前一篇介绍了FreeMarker的基本使用,本例介绍Spring MVC与FreeMarker整合 不熟悉项目搭建,可参考 [FreeMarker]FreeMarker快速入门(一) 整合 1.新建S ...

  6. Spring MVC集成Swagger

    什么是Swagger? 大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Servi ...

  7. Spring + Spring MVC + MyBatis框架整合

    ---恢复内容开始--- 一.Maven Web项目创建 如有需要,请参考:使用maven创建web项目 二.Spring + Spring MVC + MyBatis整合 1.Maven引入需要的J ...

  8. Spring + Spring MVC+Hibernate框架整合详细配置

    来源于:http://www.jianshu.com/p/8e2f92d0838c 具体配置参数: Spring: spring-framework-4.2.2Hibernate: hibernate ...

  9. Spring、Spring MVC、MyBatis整合文件配置详解

    原文  http://www.cnblogs.com/wxisme/p/4924561.html 主题 MVC模式MyBatisSpring MVC 使用SSM框架做了几个小项目了,感觉还不错是时候总 ...

随机推荐

  1. ------ 新春第一炮:阶乘算法性能分析与 double fault 蓝屏故障排查 Part I ------

    -------------------------------------------------------------------------- 春节期间闲来无事想研究下算法,上机测试代码却遇到了 ...

  2. 自兴人工智能------------python入门基础(2)列表和元祖

    一.通用序列操作: 列表中所有序列都可以进行特定的操作,包括索引(indexing).分片(slicing).序列相加(adding).乘法,成员资格,长度,最小值,最大值,下面会一一介绍这些操作法. ...

  3. caffe中Makefile.config详解

    ## Refer to http://caffe.berkeleyvision.org/installation.html # Contributions simplifying and improv ...

  4. git服务器配置http请求

    使用apache 配置http协议的git库 在CentOS上基于Apache http服务搭建git远程仓库(一) 基于http方式的git服务器搭建 搭建http协议的git服务器 Linux g ...

  5. Linux目录结构及作用

    /:根目录 /bin:存放基础系统所需的最基础的命令(程序) binary 比如:ls.cp.mkdir等 功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令   /b ...

  6. yaf框架加载全局公共函数

    在Boostrap里面建一个方法(按规则命名的函数都会被自动执行) public function _initCommonFunctions(){ Yaf_Loader::import(Yaf_App ...

  7. jquery源码分析之一前言篇

    1.问:jquery源码分析的版本是什么? 答:v3.2.1 2.问:为什么要分析jquery源码? 答:javascript是一切js框架的基础,jquery.es6.vue.angular.rea ...

  8. <CEPH中国-深圳站-技术交流会演讲PPT> YY云平台Ceph Block应用实践 & 我写的书 《CEPH实战》

    YY云平台Ceph Block应用实践 http://s3.yyclouds.com/public/YY%E4%BA%91%E5%B9%B3%E5%8F%B0Ceph%E5%AE%9E%E8%B7%B ...

  9. Redis Cluster的搭建与部署,实现redis的分布式方案

    前言 上篇Redis Sentinel安装与部署,实现redis的高可用实现了redis的高可用,针对的主要是master宕机的情况,我们发现所有节点的数据都是一样的,那么一旦数据量过大,redi也会 ...

  10. FMECA分析

    FMECA是针对产品所有可能的故障,并根据对故障模式的分析,确定每种故障模式对产品工作的影响,找出单点故障,并按故障模式的严重度及其发生概率确定其危害性.所谓单点故障指的是引起产品故障的,且没有冗余或 ...