SSM项目添加swagger2支持,亲测有用。

衔接上篇: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配置文件中添加如下内容

  
    
    
    

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
下一节!SSM项目数据库设计,Mybatis一对多,多对多实现。

项目地址:https://github.com/isliqian/ssm
个人博客:www.imqian.top

你可能感兴趣的:(SSM项目添加swagger2支持,亲测有用。)