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

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

相关推荐
SensorFlow12 小时前
测试埋点别混进正式报表:环境隔离、身份标记与查询口径三层验收
后端
从零到一未来可期12 小时前
第6集:RAG检索不准?3个参数调优路线图
后端
小物学长12 小时前
Java 程序员的 IoT 协议入门(一):物联网平台到底在做什么
java
楠风测开12 小时前
Python基础语法:变量、类型、判断和循环
程序员
const_qiu12 小时前
第四章 07:4.7 本章小结
java·运维·服务器·人工智能
柠檬味拥抱12 小时前
空中目标检测数据集 | 8900张YOLO低空安防数据集
后端
2601_9619633812 小时前
电子合同检索与全文搜索怎么测、怎么选:六个指标 + 五家平台对比 + 八个自测问题
数据库·后端·python·django·智能合约
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 22 章 Spring Boot 集成:自动配置、Properties 与条件装配
java·人工智能·开源
Code_Artist12 小时前
论反射编程的魅力——程序如何在运行时认识自己?
后端·源码·编程语言
UaoN12 小时前
作为全栈开发者,为什么看到 Shopify 回归原生,我依然选择 React Native
前端·后端