1. 添加 POM配置
<!-- swagger UI 的依赖 开始 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- swagger UI 的依赖 结束 -->
2. 添加 config配置:
package com.activity.activityDemo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 这里提供一个配置类,
* 1. 通过@EnableSwagger2注解启用Swagger2,
* 2. 配置一个Docket Bean,这个Bean中,配置映射路径和要扫描的接口的位置,
* 3. 在apiInfo中,主要配置一下Swagger2文档网站的信息,例如网站的title,网站的描述,联系人的信息,使用的协议等等。
*
* @author LZHH_2008
* @time 2020年10月30日下午3:51:38
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.activity.activityDemo.controller"))
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title("SpringBoot整合Swagger")
.description("SpringBoot整合Swagger")
.version("1.0")
.contact(new Contact("测试","测试","123@msn.com"))
.license("pub")
.licenseUrl("http://g.cn")
.build());
}
}
3. 配置 controller
package com.activity.activityDemo.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.activity.activityDemo.service.ActivitiService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
/**
* @author LZHH_2008
* @time 2020年10月29日下午6:13:48
*/
@Api(tags = "流程图相关接口")
@RestController
@RequestMapping("/activity")
//@Slf4j
public class ActivityController {
@Autowired
private ActivitiService activitiService;
/**
* 请假申请
*
*
* Object
* @param applyDays 请假天数
* @return
*/
@ApiOperation("创建流程接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "申请天数", value = "3", defaultValue = "3", required = true )
})
@GetMapping("/apply/{applyDays}")
public Object getCatalogTree(@PathVariable("applyDays") String applyDays) {
//启动流程
Map<String, String> parameters = new HashMap<>(8);
if(applyDays != null && Integer.parseInt(applyDays) >3){
parameters.put("result", "2");
}else{
parameters.put("result", "1");
}
String wfdName = "apply01";
String processInstanceId = activitiService.startWorkflow(wfdName, "apply", parameters);
System.out.println("启动流程成功,流程ID=" + processInstanceId);
return processInstanceId;
}
}
4 运行结果:
- @Api注解 Controller
- @ApiOperation注解方法。
- @ApiImplicitParam注解参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入。
- 如果有多个参数,则需要使用多个@ApiImplicitParam注解来描述,多个@ApiImplicitParam注解需要放在一个@ApiImplicitParams注解中。
- 如果参数是一个对象@ApiModel 和 @ApiModelProperty(value = "用户名")
5. 关闭Swagger
添加配置:
# 是否开启Swagger
swagger:
show: false
修改配置类, 使用上面的配置
package com.activity.activityDemo.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 这里提供一个配置类, 1. 通过@EnableSwagger2注解启用Swagger2, 2. 配置一个Docket
* Bean,这个Bean中,配置映射路径和要扫描的接口的位置, 3.
* 在apiInfo中,主要配置一下Swagger2文档网站的信息,例如网站的title,网站的描述,联系人的信息,使用的协议等等。
*
* @author LZHH_2008
* @time 2020年10月30日下午3:51:38
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.show}")
private boolean swaggerShow;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).enable(swaggerShow).pathMapping("/").select()
.apis(RequestHandlerSelectors.basePackage("com.activity.activityDemo.controller"))
.paths(PathSelectors.any()).build()
.apiInfo(new ApiInfoBuilder().title("SpringBoot整合Swagger").description("SpringBoot整合Swagger")
.version("1.0").contact(new Contact("测试", "测试", "123@msn.com")).license("pub")
.licenseUrl("http://g.cn").build());
}
}
运行结果