首先,先构建一个spingmvc的maven工程,这里就不写代码了。
然后在pom.xml中添加以下依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
我们来看下我们引入的springfox-swagger-ui-2.6.1.jar:
我们可以看到swagger2的静态文件已经被封装在jar包中了,根据这里,我们在spring-mvc.xml中来配置我们的视图解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value="/META-INF/resources/"></property>
<property name = "suffix" value = ""></property>
</bean>
接下来,我们创建swagger2的配置文件,和测试的controller
@Configuration //让Spring来加载该类配置
@EnableWebMvc //启用Mvc,非springboot框架需要引入注解@EnableWebMvc
@EnableSwagger2 //启用Swagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()).select()
//扫描指定包中的swagger注解
//.apis(RequestHandlerSelectors.basePackage("com.xia.controller"))
//扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("基础平台 RESTful APIs")
.description("基础平台 RESTful 风格的接口文档,内容详细极大的减少了前后端的沟通成本,同时确保代码与文档保持高度一致,极大的减少维护文档的时间。")
.termsOfServiceUrl("http://xiachengwei5.coding.me")
.contact("mooc")
//.license("个人博客")
//.licenseUrl("http://xiachengwei5.coding.me")
.version("0.0.1")
.build();
}
}
/**
* @Api 这个注解分模块的,记得要用tags
* @author dumingwei
*
*/
@Api(tags="个人业务")
@RestController
@RequestMapping("/person")
public class PersonController {
/**
* @ApiOperation 这个注解是指该方法是用来做什么的,一定要加上httpMethod,否则会出现一堆
* @param userVo
* @return
*/
@RequestMapping(value="/getPerson",method= RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "个人信息", produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Person getPersons() {
Person person = new Person();
person.setFirstName("fname");
person.setLastName("lname");
person.setAge(37);
person.setDeptName("dept");
return person;
}
}
}
打开http://localhost:8080/${projectName}/swagger-ui.html.这里的projectName就是你的工程名,成功则出现下图所示: