注意:Knife4j 与 Swagger2 冲突
<!-- swagger2 依赖配置-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>2.8.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>2.8.0</version>-->
<!-- </dependency>-->
<!-- Knife4j 依赖配置-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.7</version>
</dependency>
1.在maven项目的pom.xml中引入Knife4j的依赖包
<!-- Knife4j 依赖配置-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.7</version>
</dependency>
2.创建Swagger配置依赖
按需求填写相关信息
- 2.0.6及以上版本,使用@EnableSwagger2WebMvc注解开启,而2.0.6之前版本是使用@EnableSwagger2注解,和swagger-bootstrap-ui是一样的;
如果不想编写配置类也可以,将@EnableSwagger2WebMvc标注在启动类上即可,就完成入门级别的整合
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
这里要填写自己的 工程路径
/**
* @author Gong XiuYi
* @date 2022/2/23 9:56
**/
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
.title("swagger-bootstrap-ui-demo RESTful APIs")
.description("# swagger-bootstrap-ui-demo RESTful APIs")
.termsOfServiceUrl("http://www.xx.com/")
.contact("xx@qq.com")
.version("1.0")
.build())
//分组名称
.groupName("2.X版本")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
3.在 RESTful 基础上添加 以下两个注释
@Api(tags = {"用户接口"})
@ApiOperation(value="查询", notes="根据User对象创建用户")
/**
* @author Gong XiuYi
* @date 2022/2/23 8:42
**/
@Api(tags = {"用户接口"})
@RestController
@RequestMapping("/RESTful")
public class RestfulController {
@Resource
private BookRepository bookRepository;
@ApiOperation(value="查询", notes="根据User对象创建用户")
@GetMapping("/book/get/{userId}")
public JsonResult getBook(@PathVariable String userId){
Book book = new Book();
book.setPrice(200F);
book.setId(10L);
book.setName(userId);
bookRepository.save(book);
return JsonResult.ok(bookRepository.findAll());
}
此时,启动Spring Boot工程,在浏览器中访问:http://localhost:端口/doc.html
报错
报错: Failed to start bean ‘documentationPluginsBootstrapper‘ 问题处理
2.6.0开始使用基于PathPatternParser的路径匹配,而Springfox版本一直没有更新还是使用的AntPathMatcher导致了这个问题,要处理问题也很简单,修改yaml文件,将SpringBoot路径匹配模式修改为AntPathMatcher就可以了,
配置如下:spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER