衔接上篇:JavaWeb项目整合Spring,SpringMVC,Mybatis框架
One Step!
导入Swag2所需jar包,版本为2.7.0,导包过程有点漫长,有点耐心。
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.7.0'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0'
Two Step!
进行相关的基础配置
新建config包,建立SwaggerConfig.java文件,添加如下内容
package com.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* Created by LiQian_Nice on 2018/2/21
*/
/*重要!如果你的项目引入junit测试,此处需要使用@WebAppConfiguration,如果没有使用junit使用@Configuration(很多的博客都没有注明这个问题,为此我花了非常多的时间解决问题)*/
@WebAppConfiguration
@EnableSwagger2//重要!
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")//扫描control所在的package请修改为你control所在package
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("学生选课系统项目接口文档")
.description("学生选课系统项目接口测试")
.version("1.0.0")
.termsOfServiceUrl("")
.license("")
.licenseUrl("")
.build();
}
}
在原有的SpringMVC.xml配置文件中添加如下内容
<!--重要!将你的SwaggerConfig配置类注入-->
<bean class="com.example.config.SwaggerConfig"/>
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />
Three Step!
测试Swagger接口文档是否成功显示
这里我们以CourseController为例
import com.example.bean.Course;
import com.example.bean.Result;
import com.example.service.ICourseService;
import com.example.util.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Created by LiQian_Nice on 2018/2/19
*/
@RequestMapping("courses")
@Controller
@Api(value = "/courses", tags = "学生课程接口",description = "学生课程接口")
public class CourseController {
private static Logger logger= LoggerFactory.getLogger(CourseController.class);
@Autowired
private ICourseService courseService;
@GetMapping("/")
@ResponseBody
@ApiOperation(value = "获取全部课程列表", notes = "获取全部课程列表", httpMethod = "GET", response = Course.class)
public Result findAll(){
return ResultUtil.success();
}
}
然后运行我们的Tomcat
打开http://localhost:8080/demo/swagger-ui.html,如果页面正常显示,说明我们已经成功在项目里添加swagger2支持。如下图所示。
此时,我们就可以随意做测试了,很方便。
拓展 常用注解:
- @Api()用于类; 表示标识这个类是swagger的资源
- @ApiOperation()用于方法; 表示一个http请求的操作
- @ApiParam()用于方法,参数,字段说明; 表示对参数的添加元数据(说明或是否必填等)
- @ApiModel()用于类 表示对类进行说明,用于参数用实体类接收
- @ApiModelProperty()用于方法,字段 表示对model属性的说明或者数据操作更改
- @ApiIgnore()用于类,方法,方法参数 表示这个方法或者类被忽略
- @ApiImplicitParam() 用于方法 表示单独的请求参数
- @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam