springboot3 集成knife4j

knife4j介绍

Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案。

springdoc地址:OpenAPI 3 Library for spring-boot

Knife4j官网地址:Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j

环境介绍

java:17

SpringBoot:3.2.0

SpringCloud:2023.0.0

knife4j : 4.4.0

引入maven配置

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

application.yml配置

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.jilianyun.demo2.controller
# knife4j的增强配置,不需要增强可以不配
knife4j:
  enable: true
  setting:
    language: zh_cn

Swagger3Config配置类

package com.demo2.config;
 
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.OAuthFlow;
import io.swagger.v3.oas.models.security.OAuthFlows;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
 
/**
 * <p>Swagger 配置类</p>
 *
 * @author By: chegnxuyanshitang
 * Package com.demo2.config
 * Ceate Time 2024-04-22 10:25
 */
@Configuration
public class Swagger3Config extends WebMvcConfigurationSupport {
 
    /**
     * 设置静态资源映射
     *
     * @param registry
     */
    protected void addResourceHandlers (ResourceHandlerRegistry registry) {
        registry.addResourceHandler ("/doc.html").addResourceLocations ("classpath:/META-INF/resources/");
        registry.addResourceHandler ("/webjars/**").addResourceLocations ("classpath:/META-INF/resources/webjars/");
    }
 
    @Bean
    public OpenAPI apiInfo () {
        return new OpenAPI ()
                .info (new Info ()
                        .title ("demo服务")
                        .version ("1.0.0")
                        .description ("demo接口")
                        .license (new License ().name ("Apache 2.0")
                                .url ("http://www.yang.com/"))
                );
    }
}
 

DemoController类

package com.demo2.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * <p>DemoController</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.demo2.controller
 * Ceate Time 2024-04-17 16:45
 */
@RefreshScope
@RestController
@Tag(name = "Demo接口", description = "Demo接口")
public class DemoController {


    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("demo")
    @Operation(summary = "demo接口", description = "demo接口")
    public String getMessage () {
        List<Map<String, Object>> maps = jdbcTemplate.queryForList ("SELECT * FROM users");

        System.out.println ("====================================");
        System.out.println (maps);
        System.out.println ("====================================");
        return message;
    }

   
}

启动服务,访问文档

访问Knife4j的文档地址:http://ip:port/doc.html即可查看文档

Knife4j版本参考

更名为Knife4j之前,原来的名称是叫swagger-bootstrap-ui,这是两种不一样风格的Ui,对比情况如下:

名称 开发语言&框架 状态 最后版本 风格
Knife4j Java、JavaScript、Vue 持续更新中... 黑色
swagger-bootstrap-ui Java、JavaScript、jQuery 停更 1.9.6 蓝色

nife4j从开源至今,目前主要经历版本的变化,分别如下:

版本 说明
1.0~1.9.6 名称是叫swagger-bootstrap-ui,蓝色风格Ui
1.9.6 蓝色皮肤风格,开始更名,增加更多后端模块
2.0~2.0.5 Ui基于Vue2.0+AntdV重写,黑色风格,参考示例,底层依赖的springfox框架版本是2.9.2,仅提供Swagger2规范的适配
2.0.6~2.0.9 底层springfox框架版本升级至2.10.5,,仅提供Swagger2规范的适配
3.0~3.0.3 底层依赖springfox框架版本升级至3.0.3,OpenAPI规范是v3,过度版本,建议开发者不要使用
4.0~ 区分OpenAPI2和Swagger3的Maven坐标artifactId
OpenAPI2规范服务端解析框架稳定在springfox2.10.5
OpenAPI3框架服务端解析跟随springdoc项目更新迭代
建议开发者使用该版本

Spring Boot版本兼容性

Spring Boot版本 Knife4j Swagger2规范 Knife4j OpenAPI3规范
1.5.x~2.0.0 <Knife4j 2.0.0 >=Knife4j 4.0.0
2.0~2.2 Knife4j 2.0.0 ~ 2.0.6 >=Knife4j 4.0.0
2.2.x~2.4.0 Knife4j 2.0.6 ~ 2.0.9 >=Knife4j 4.0.0
2.4.0~2.7.x >=Knife4j 4.0.0 >=Knife4j 4.0.0
>= 3.0 >=Knife4j 4.0.0 >=Knife4j 4.0.0

Knife4j在之前的版本更新中,逐渐提供了一些服务端适配的增强特性功能。

但是开发者应该明白,不管是Swagger2规范还是OpenAPI3规范,Knife4j的最新版本的纯Ui版本,是可以适配Spring Boot所有版本的。

如果你不考虑使用Knife4j提供的服务端增强功能,引入Knife4j的纯Ui版本没有任何限制。只需要考虑不同的规范即可

Knife4版本参考地址:Knife4j版本参考 | Knife4j




相关推荐

  1. Springboot3 集成knife4j(swagger)

    2024-04-25 17:58:03       40 阅读
  2. SpringBoot集成knife4j

    2024-04-25 17:58:03       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 17:58:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 17:58:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 17:58:03       82 阅读
  4. Python语言-面向对象

    2024-04-25 17:58:03       91 阅读

热门阅读

  1. Springboot的@Cacheable注解

    2024-04-25 17:58:03       32 阅读
  2. Android AIDL传递类对象

    2024-04-25 17:58:03       28 阅读
  3. pthread_cond_t和 sem_t的应用

    2024-04-25 17:58:03       27 阅读
  4. 数据库的END

    2024-04-25 17:58:03       26 阅读
  5. 基于享元模式实现连接池

    2024-04-25 17:58:03       35 阅读
  6. qt——设置ComBox的默认显示内容

    2024-04-25 17:58:03       33 阅读