springMVC4集成swagger2

来源:互联网 发布:php 判断今天星期几 编辑:程序博客网 时间:2024/05/29 19:20
本帖子使用的组件版本:
Spring 4.2.1.RELEASE
Swagger 2.4.0

1.Swagger介绍:
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
===============================================================================================================================================
2.Swagger如何集成到SpringMVC中:
1)添加maven依赖
  <!-- swagger -->
  <dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.4.0</version>
  </dependency>
  <dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.4.0</version>
  </dependency>

--springfox-swagger2为Swagger的核心依赖;springfox-swagger-ui为Swagger的UI包,支持通过浏览器(chrome)查看API信息。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2)增加Swagger配置类
@Configuration
@EnableSwagger2
public class RestApiConfig extends WebMvcConfigurationSupport {

    @Bean
    public Docket createRestApi1() {

        return new Docket(DocumentationType.SWAGGER_2).groupName("tem1").apiInfo(buildApiInf()).select()
                .apis(RequestHandlerSelectors.basePackage("com.thunisoft.springmvc.business.api.tem1"))//controller路径
                .paths(PathSelectors.any()).build();
    }

    @Bean
    public Docket createRestApi2() {

        return new Docket(DocumentationType.SWAGGER_2).groupName("tem2").apiInfo(buildApiInf()).select()
                .apis(RequestHandlerSelectors.basePackage("com.thunisoft.springmvc.business.api.tem2"))//controller路径
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo buildApiInf() {
        return new ApiInfoBuilder().title("API").termsOfServiceUrl("
www.xxxx.com")
                .description("springmvc swagger2").build();
    }
}

--这段代码中需要注意的一个地方是groupName,这个相当于分组命名,basePackage为需要扫描的包,每个groupName对应一个basePackage。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3)配置web.xml文件
<servlet>
  <servlet-name>dispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:/spring/mvc/mvcContext.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

--注意配置DispatcherServlet的url-pattern为  /  
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4)配置SpringMVC-Context.xml文件:
添加一行配置:<mvc:default-servlet-handler />
--在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5)编写API的Controller类:
在2)步中指定的com.thunisoft.springmvc.business.api.tem1和com.thunisoft.springmvc.business.api.tem2包下面添加所需要的controller类,举例:
@Controller
@RequestMapping(value = "/api1")
public class ApiController1 {

    @ApiOperation(value = "获取用户信息", notes = "根据url的id来获取用户详细信息")
    @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "User")
    @RequestMapping(value = "/getUser.html", method = RequestMethod.GET)
    @ResponseBody
    public User getUser(@RequestParam(value = "userId") Integer userId) {
        User u = new User();
        u.setcId("1111");
        u.setcName("test");
        return u;
    }
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6)访问http://{IP}:{端口}/{应用名称}/swagger-ui.html查看API文档:




原创粉丝点击