大概就是一个能够通过注解自动生成api文档的工具
开始~
- 在
pom.xml中的dependencies节点下添加依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
然后加载一下变更(每次改完依赖都需要)
- 在任意位置新建
SwaggerConfig.java,我是放在了src/main/java/com/lazysleep/base/core/config
package com.lazysleep.base.core.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.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket docket() {
return new Docket(DocumentationType.OAS_30)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring MVC集成Swagger3.0示例")
.description("Swagger3.0 Demo")
.version("1.0")
.build();
}
}
- 在控制器中添加
@Api和@ApiOperation注解
package com.lazysleep.base.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@Api(tags = "Foo控制器")
@RestController
@RequestMapping("/foo")
public class FooController {
@GetMapping("foo")
@ApiOperation(value = "Foo接口")
public Map foo() {
var map = new HashMap<>();
map.put("data","foooooooooooo~~~");
return map;
}
}
- 运行报错
Type javax.servlet.http.HttpServletRequest not present
大概查了一下,说是spring boot版本太高,swagger版本支持不了。问题不大,那就降spring boot版本,到pom.xml中改版本为2.7.8后重新载入
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- 运行再报错
Failed to start bean 'documentationPluginsBootstrapper'...
又又又查了说配置文件里加一个配置spring.mvc.pathmatch.matching-strategy=ant_path_matcher,也就是application.properties文件。
配置文件除了.properties格式还可以使用.yml格式,所以我选yml。
src/main/resources/application.yml内容如下
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher # 配置这个来防止swagger报错
- 运行成功不报错后访问
http://127.0.0.1:8080/swagger-ui/index.html即可