导包
pom.xml
<!-- swagger -->
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>1.0.2</version>
</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.5.1</version>
</dependency>
配置注解
<context:component-scan base-package="com.ssh.swagger" />
<!-- 将 springSwaggerConfig加载到spring容器 -->
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
<!-- 将自定义的swagger配置类加载到spring容器 -->
<bean class="com.ssh.swagger.SwaggerConfig" />
配置类
package com.ssh.swagger;
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",
"1043023220@qq.com",
"web app",
"My Apps API License URL");
return apiInfo;
}
}
Controller.java
@Api(value="user")
@Controller
@RequestMapping(value="/person")
public class PersonController{
@Autowired
private PersonService personService;
@ApiOperation(value = "根据ID获取用户信息",httpMethod="GET",notes="get user by id",response=Person.class)
@RequestMapping(value = "/show")
@ResponseBody
public Person findById(@ApiParam(required=true,value="用户ID",name="userId")@RequestParam(value="id")Integer id) {
Person person = personService.getByid(id);
model.addAttribute("person", person);
return person;
}
}
下载swagger-ui:https://github.com/swagger-api/swagger-ui
解压后将dist文件夹中所有的文件拷贝到webapp/swagger这里的swagger是作者自定义的你可以写为自己创建的目录。
修改index.html中的 http://petstore.swagger.wordnik.com/v2/swagger.json修改为自己项目路径+api-docs,例如:
http://localhost:8080/ssh/api-docs:ssh为项目名称。(如果springMVC配置的拦截路径为*.do则为http://localhost:8080/ssh/api-docs.do )路径要能被springMVC拦截到
在spring-mvc.xml中过滤掉swagger-ui的文件:
<!-- 静态资源文件,不会被Spring MVC拦截 -->
<mvc:resources mapping="/swagger/**" location="/swagger/" />
在浏览器中访问在浏览器中访问:http://localhost:8080/ssh/swagger/index.html