SprongBoot3整合Knife4j-4.4

前言

本文将详细的介绍如何在sspringboot3项目中整合Knife4j 4.4

Knife4j官网:

Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com)

目前项目的兼容性

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项目需要使用Knife4j 4.0.0 及以上版本

  • 第一步在项目中添加依赖

引用Knife4j的starter,Maven坐标如下:

xml 复制代码
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

Gradle坐标如下:

scss 复制代码
implementation("com.github.xiaoymin:knife4j-openapi3-jakarta-spring-boot-starter:4.4.0")

目前我们讲解将Knife4j-4.4后正常使用,如需要进一步进行配置完全参考springdoc-openapi的项目说明,Knife4j只提供了增强部分,如果要启用Knife4j的增强功能,可以在配置文件中进行开启

当前项目就整合了Knife4j

  • 开发接口

现在我们写一个测试接口

java 复制代码
@RestController
@RequestMapping("employee-info")
public class EmployeeInfoController {

    @GetMapping("/test")
    public String test(){
        return "hello";
    }
}

接下来我们就启动项目,在网页使用http://ip:port/doc.html即可查看文档

我这里没有更改端口号,tomcat的默认端口号为8080-,所以我们就直接访问http://localhost:8080/doc.html

可以看到目前页面显示为

可以看到Knife4j已经成功扫描到我们的接口了

接下来我们就去测试一下接口是否可以正常跑通

可以看到我们已经成功跑通接口,并成功拿到了后端给我们的返回数据

参考官方文档,我们可以在配置文件里添加部分配置

application.yml

yml 复制代码
# springdoc-openapi项目配置
springdoc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: 'default'
      paths-to-match: '/**'
      packages-to-scan: com.xiaominfo.knife4j.demo.web
# knife4j的增强配置,不需要增强可以不配
knife4j:
  enable: true
  setting:
    language: zh_cn

以下是这些配置的详解

  1. SpringDoc OpenAPI 配置:

    • springdoc.swagger-ui.path: 配置 Swagger UI 的访问路径,默认为 /swagger-ui.html
    • springdoc.swagger-ui.tags-sorter: 配置 Swagger UI 中接口标签的排序方式,这里设置为字母顺序 (alpha)。
    • springdoc.swagger-ui.operations-sorter: 配置 Swagger UI 中接口操作的排序方式,这里设置为字母顺序 (alpha)。
    • springdoc.api-docs.path: 配置 OpenAPI 文档的访问路径,默认为 /v3/api-docs
    • springdoc.group-configs: 配置 OpenAPI 分组。这里定义了一个名为 "default" 的分组,扫描 com.xiaominfo.knife4j.demo.web 包下的接口,并匹配所有路径 (/**)。
  2. Knife4j 配置:

    • knife4j.enable: 开启 Knife4j 增强功能。
    • knife4j.setting.language: 设置 Knife4j 的界面语言为中文 (zh_cn)。

我们知道在配置文件中的配置参数我们都可以通过配置类的方式达到同样的效果

接下来我们就是用配置的方式去实现

Knife4jConfig.java

java 复制代码
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class SpringDocConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    // SpringDoc OpenAPI 配置
    @Bean
    public OpenApiCustomizer openApiCustomizer() {
        return openApi -> {
            openApi.getPaths().values().stream()
                    .flatMap(pathItem -> pathItem.readOperations().stream())
                    .forEach(operation -> operation.addTagsItem("default"));

            openApi.setInfo(new Info()
                    .title("API 文档")
                    .version("1.0.0"));

            openApi.getInfo().getContact()
                    .name("多宝")
                    .email("duobao@example.com");
        };
    }

    @Bean
    public GroupedOpenApi defaultGroupedOpenApi() {
        return GroupedOpenApi.builder()
                .group("default")
                .pathsToMatch("/**")
                .packagesToScan("com.xiaominfo.knife4j.demo.web")
                .build();
    }

    // Knife4j 配置
    @Bean
    public KnifeSetting knifeSetting() {
        KnifeSetting setting = new KnifeSetting();
        setting.setLanguage(Language.ZH_CN);
        return setting;
    }
}

总结

本文详细的讲解了如何在springboot3项目中去引入Knife4j-4.4

希望对你能够有所帮助!!!!

相关推荐
骄马之死5 小时前
SpringMVC + SpringBoot 核心知识点总结
java·spring boot·后端
GoGeekBaird6 小时前
Anthropic技能"(Skills)的经验分享
后端
王码码20356 小时前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
郑洁文6 小时前
基于Spring Boot的流浪动物救助网站
java·spring boot·后端·毕设·流浪动物救助
螺丝钉code7 小时前
JAVA项目 Claude code CLAUDE.md 到底应该怎么写
java·人工智能·claude code
指令集梦境8 小时前
Cursor + Spring Boot实战:从零写一个RESTful API
spring boot·后端·restful
摇滚侠8 小时前
Maven 入门+高深 单一架构案例 54-59
java·架构·maven·intellij-idea
VidDown9 小时前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
码云之上9 小时前
聊聊如何设计一个高效、稳定的 Node.js 接入层
前端·后端·node.js
折哥的程序人生 · 物流技术专研9 小时前
Java 23 种设计模式:从踩坑到精通 | 原型模式 —— 克隆对象,深拷贝与浅拷贝的坑你踩过吗?
java·设计模式·架构·原型模式·单一职责原则