PS:个人笔记,大佬网址跳转
SpringBoot3整合Knife4j-4.4本文详细的讲解了如何在springboot3项目中去引入Knife4j- - 掘金
一、版本兼容
Knife4j 与各个版本 Spring Boot 的兼容性情况如下:
- Spring Boot 1.5.x~2.0.0:对应 Knife4j 2.0.0 以下版本;
- Spring Boot 2.0-2.2:对应 Knife4j 2.0.0-2.0.6 版本;
- Spring Boot 2.2.x-2.4.0:对应 Knife4j 2.0.6-2.0.9 版本;
- Spring Boot 2.4.0-2.7.x:对应 Knife4j 4.0.0 及以上版本;
- Spring Boot 3.0 及以上:对应 Knife4j 4.0.0 及以上版本
二、依赖
我是springboot3,所以用这个版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
三、配置
1、application.yml
只用这个就可以了
# 配置springdoc-openapi,用于文档化和访问API
springdoc:
# 配置Swagger UI的访问路径和排序方式
swagger-ui:
path: /swagger-ui.html # Swagger UI的访问路径
tags-sorter: alpha # 按字母顺序排序标签
operations-sorter: alpha # 按字母顺序排序操作
# 配置API文档的访问路径
api-docs:
path: /v3/api-docs # API文档的访问路径
# 配置API分组,用于组织和管理API
group-configs:
- group: 'default' # API分组名称
paths-to-match: '/**' # 匹配所有路径
packages-to-scan: com.example.sptraining.server.controller # 扫描的包,用于自动发现API
knife4j:
enable: true
setting:
language: zh_cn
2、配置类
如果项目中定义了配置类,一定的那个要加上静态资源映射
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 设置静态资源映射 访问接口文档
*
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("设置静态资源映射");
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
四、常用注解
1、Controller @Tag@Operation
@RestController
@RequestMapping("/admin")
@Tag(name = "管理员接口",description = "管理员相关操作")
public class AdminController {
@Operation(summary = "管理员登录",description = "管理员账号密码登录")
@PostMapping("/login")
public Result<AdminLoginVO> login(@RequestBody AdminLoginDTO adminLoginDTO){
}
}
2、Pojo @Schema
@Data
@Schema(description="Admin对象")
public class Admin implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "管理员id")
private Integer adminId;
@Schema(description = "账号")
private String account;
@Schema(description = "密码")
private String pwd;
}
五、错误记录
1、映射问题
映射出问题了,就是(三、配置)中的描述,要么加上静态资源映射,要么把配置类注释了
2、java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)'
如果定义了全局异常处理器就会出这个问题,加个@Hidden注解就行