1、导包
maven新建一个空的webapp项目
pom.xml中导入 swagger需要的关键包
a、 swagger-springmvc
b、 jackson-databind 此包会依赖于jackson-core和jackson-annotations
因为是使用的maven,会自动加载依赖,所以无需像网上大多数的那样引入4个包
com.mangofactory
swagger-springmvc
1.0.2
com.fasterxml.jackson.core
jackson-databind
2.8.6
2、增加swagger需要的配置文件 (我是放在了 一个config结尾的包中)
package com.gta.mvcdemo.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.models.dto.ApiInfo;
import com.mangofactory.swagger.plugin.EnableSwagger;
import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;
@EnableSwagger
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(
"springmvc搭建swagger",
"spring-API swagger测试",
"My Apps API terms of service",
"[email protected]",
"web app",
"My Apps API License URL");
return apiInfo;
}
}
3、配置 spring、springmvc、web.xml
springmvc-servlet.xml配置文件
web.xml配置
Archetype Created Web Application
contextConfigLocation
classpath:spring.xml
org.springframework.web.context.ContextLoaderListener
spring
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-servlet.xml
1
spring
/
spring.xml 其实没配任何东西
4、controller和model
UserController.java
package com.gta.mvcdemo.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gta.mvcdemo.model.User;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiParam;
@Api(value="user")
@Controller
@RequestMapping(value="/user")
public class UserController {
@RequestMapping(value = "/getUser")
@ResponseBody
@ApiOperation(value="根据ID获取用户信息",httpMethod="GET",notes="get user by id",response=User.class)
public User getUser(@ApiParam(required=true,value="用户ID",name="userId")@RequestParam(value="userId")Integer userId) {
User u=new User();
u.setUserId(100);
u.setUserName("张三");
return u;
}
}
User.java
package com.gta.mvcdemo.model;
public class User {
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
5、与Swagger集成
在GitHub上将swaggerui下载,地址:https://github.com/swagger-api/swagger-ui
(注意这里下载3.0以下的ui版本,不要用最新的版本)
解压后将dist文件夹中所有的文件拷贝到webapp/swagger这里的swagger是作者自定义的你可以写为自己创建的目录。
修改index.html中的 http://petstore.swagger.wordnik.com/v2/swagger.json修改为自己项目路径+api-docs,例如:
http://localhost:8080/springmvc-swagger/api-docs:springmvc-swagger为项目名称。
整个项目目录结构:
运行后的效果
注意点:swagger的ui版本不要过高,用3.0以下的。