Spring Boot 集成 Swagger
1.初始化一个Spring Boot 项目信息
使用spring官方自带初始化的地址初始化
地址:https://start.spring.io/
引入web包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.在初始化完成的SpringBoot项目中引入Swagger的依赖包
<properties>
<java.version>1.8</java.version>
<swagger.version>2.9.2</swagger.version>
</properties>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
3.添加Swagger配置类
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.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
// api的包路径
.apis(RequestHandlerSelectors.basePackage("com.tms.spring.boot.swagger.controller"))
.paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
// 文档标题
.title("Kitty API Doc")
// 文档描述
.description("restful 风格接口")
// 版本号
.version("1.0")
.build();
}
}
4.添加测试Controller
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* swagger接口文档测试类
*/
// 类描述
@Api(tags = "swagger接口文档测试类")
@RestController
@RequestMapping("/demo/swagger/url")
public class DemoSwaggerController {
// 方法描述
@ApiOperation(value = "GET请求测试接口", notes = "GET请求测试接口")
// 方法参数描述
@ApiImplicitParam(name = "param", value = "请求参数", required = true, dataType = "string")
@GetMapping("/getMapping")
public String getMapping (@RequestParam("param") String param) {
return "this is swagger project getMapping param:" + param;
}
@ApiOperation(value = "POST请求测试接口", notes = "POST请求测试接口")
// 多个参数描述
@ApiImplicitParams({
@ApiImplicitParam(name = "value1", value = "值1", required = true, dataType = "string"),
@ApiImplicitParam(name = "value2", value = "值2", required = true, dataType = "string"),
})
@PostMapping("/postMapping")
public String postMapping (@RequestBody Map paramMap) {
return "this is swagger project postMapping paramMap:" + paramMap;
}
}
5.修改启动类,添加启动Swagger
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2
public class SpringBootSwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootSwaggerApplication.class, args);
}
}
6.运行测试,打包启动
我在配置文件中自定义了,端口号和访问路径,默认的端口号:8080,路径"/"
默认访问路径:http://127.0.0.1:8080/swagger-ui.html
7.页面效果
8.问题
默认使用的是Spring Boot版本为2.6.5,Swagger版本为2.9.2,启动时会报错
具体原因未查明先记录一下,不过将SpringBoot版本改为2.5.6之后,就可以启动成功正常使用了。