springmvc整合swagger

时间:2023-03-10 01:25:36
springmvc整合swagger

前言

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

关于springmvc框架整合swagger的技术相信网上已经有很多demo了。但是前不久我刚学习的时候我试这从网上拉了代码下来,发现整合失败了。后来在自己的努力下终于成功了。下面就给大家来介绍一下吧  (*^__^*) 嘻嘻。

1.依赖管理

在整合之前,先要把必要的jar包引入进来。我这里用到了maven代码管理工具,所以只需要在pom.xml文件里引入以来就好了。

 <!-- swagger-mvc -->
 <dependency>
     <groupId>com.mangofactory</groupId>
     <artifactId>swagger-springmvc</artifactId>
     <version>1.0.2</version>
 </dependency>
 <dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.6.6</version>
 </dependency>
 <!-- swagger-mvc -->
 <!-- slfj4 -->
 <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version>1.7.7</version>
 </dependency>

2.swagger配置

 package cn.fansunion.swagger.serverapi.swagger;

 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

 import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
 import com.mangofactory.swagger.models.dto.ApiInfo;
 import com.mangofactory.swagger.paths.SwaggerPathProvider;
 import com.mangofactory.swagger.plugin.EnableSwagger;
 import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;

 @Configuration
 @EnableWebMvc
 @EnableSwagger
 public class CustomJavaPluginConfig extends WebMvcConfigurerAdapter {

     private SpringSwaggerConfig springSwaggerConfig;

     @Autowired
     public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
         this.springSwaggerConfig = springSwaggerConfig;
     }

     /**
      * 链式编程 来定制API样式 后续会加上分组信息
      *
      * @return
      */
     @Bean
     public SwaggerSpringMvcPlugin customImplementation() {
         return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
                 .apiInfo(apiInfo()).includePatterns(".*")
                 .useDefaultResponseMessages(false)
             //    .pathProvider(new GtPaths())
                 .apiVersion("0.1");

     }

     private ApiInfo apiInfo() {
         ApiInfo apiInfo = new ApiInfo("SwaggerAPI接口平台",
                 "提供详细的后台所有Restful接口", "http://blog.****.net/FansUnion",
                 "1058449814@qq.com", "我的邮箱", "http://baidu.com");
         return apiInfo;
     }

     @Override
     public void configureDefaultServletHandling(
             DefaultServletHandlerConfigurer configurer) {
         configurer.enable();
     }

     class GtPaths extends SwaggerPathProvider {

         @Override
         protected String applicationPath() {
             return "/restapi";
         }

         @Override
         protected String getDocumentationPath() {
             return "/restapi";
         }
     }

 }

.....待续