当前位置: 首页 > news >正文

spring boot集成Knife4j

文章目录

  • 一、Knife4j是什么?
  • 二、使用步骤
    • 1.引入依赖
    • 2.新增相关的配置类
    • 3.添加配置信息
    • 4.新建测试类
    • 5. 启动项目
  • 三、其他版本集成时常见异常
    • 1. Failed to start bean ‘documentationPluginsBootstrapper
    • 2.访问地址后报404


一、Knife4j是什么?

前言:
Spring Boot 版本建议 2.4.0~3.0.0之间
Spring Boot 版本 < 2.4 版本则建议选择Knife4j 4.0之前的版本
该示例springboot版本为2.7.18

Knife4j是一个基于Swagger构建的开源JavaAPI文档工具,它为Java开发者提供了生成、展示和调试API文档的功能。它提供了一套美观且功能强大的界面,可以自动生成API文档,并支持接口分组、参数设置、请求示例、响应模型配置等高级功能。

Knife4j 在更名为Knife4j之前,原来的名称是叫swagger-bootstrap-ui,这是两种不一样风格的Ui,对比情况如下
在这里插入图片描述

二、使用步骤

1.引入依赖

#  注意:引入knife4j后会自动引入swagger相关依赖,因此无需再手动引入swagger相关依赖,否则会引起版本冲突<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.0.0</version></dependency>

2.新增相关的配置类

package com.xxxx;import org.springframework.core.annotation.Order;
import springfox.documentation.service.Contact;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {@Bean(value = "defaultApi1")@Order(1)public Docket defaultApi1() {Docket docket=new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())//分组名称.groupName("用户").select()//这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("om.xx.demo.controller.sys")).paths(PathSelectors.any()).build();return docket;}@Bean(value = "defaultApi2")@Order(2)public Docket defaultApi2() {Docket docket=new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())//分组名称.groupName("测试").select()//这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("com.xx.demo.controller.test")).paths(PathSelectors.any()).build();return docket;}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("标题")  //标题.contact(new Contact("admin","http://127.0.0.1",""))  //作者.description("简介API文档")  //简介.termsOfServiceUrl("") //服务URL.version("1.0") //版本.build();}}

3.添加配置信息

在application.properties或application.yml中配置Knife4j相关的属性(可选,根据需要配置)

     knife4j:# 增强功能开启enable: true# 开启生产环境屏蔽(该选项配置后,无法访问页面)production: true# 开启Swagger的Basic认证功能,默认是false,配置后登录才可访问页面basic:enable: true# Basic认证用户名username: admin# Basic认证密码password: 123456

4.新建测试类

package com.xx.demo.controller.test;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@Api( tags = "测试接口")
@RestController
public class HelloController {@GetMapping("/test")@ApiOperation("查test列表")public String test(){return "hello";}
}

5. 启动项目

启动项目后,访问http://ip:port/doc.html,输入用户名密码后可查看
在这里插入图片描述


三、其他版本集成时常见异常

1. Failed to start bean ‘documentationPluginsBootstrapper

解决办法:再启动类上加@EnableWebMvc

2.访问地址后报404

package com.xx.demo.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");super.addResourceHandlers(registry);}}

相关文章:

spring boot集成Knife4j

文章目录 一、Knife4j是什么&#xff1f;二、使用步骤1.引入依赖2.新增相关的配置类3.添加配置信息4.新建测试类5. 启动项目 三、其他版本集成时常见异常1. Failed to start bean ‘documentationPluginsBootstrapper2.访问地址后报404 一、Knife4j是什么&#xff1f; 前言&…...

redis核心面试题一(架构原理+RDB+AOF)

文章目录 0. redis与mysql区别1. redis是单线程架构还是多线程架构2. redis单线程为什么这么快3. redis过期key删除策略4. redis主从复制架构原理5. redis哨兵模式架构原理6. redis高可用集群架构原理7. redis持久化之RDB8. redis持久化之AOF9. redis持久化之混合持久化 0. red…...

STM32F1之SPI通信·软件SPI代码编写

目录 1. 简介 2. 硬件电路 移位示意图 3. SPI时序基本单元 3.1 起始条件 3.2 终止条件 3.3 交换一个字节&#xff08;模式0&#xff09; 3.4 交换一个字节&#xff08;模式1&#xff09; 3.5 交换一个字节&#xff08;模式2&#xff09; 3.6 交换一个字节&a…...

实战:生成个性化词云的Python实践【7个案例】

文本挖掘与可视化&#xff1a;生成个性化词云的Python实践【7个案例】 词云&#xff08;Word Cloud&#xff09;&#xff0c;又称为文字云或标签云&#xff0c;是一种用于文本数据可视化的技术&#xff0c;通过不同大小、颜色和字体展示文本中单词的出现频率或重要性。在词云中…...

云存储与云计算详解

1. 云存储与云计算概述 1.1 云存储 云存储&#xff08;Cloud Storage&#xff09;是指通过互联网将数据存储在远程服务器上&#xff0c;用户可以随时随地访问和管理这些数据。云存储的优点包括高可扩展性、灵活性和成本效益。 1.2 云计算 云计算&#xff08;Cloud Computin…...

【飞舞的花瓣】飞舞的花瓣代码||樱花代码||表白代码(完整代码)

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 这段代码是一个HTML页面&#xff0c;其中包含一个canvas元素和相关的JavaScript代码。这个页面创建了一个飘落花瓣的动画效果。 代码【获取完整代码关注微信公众号「ClassmateJie」回复“…...

网络安全的重要组成部分:数据库审计

数据库审计&#xff08;简称DBAudit&#xff09;以安全事件为中心&#xff0c;以全面审计和精确审计为基础&#xff0c;实时记录网络上的数据库活动&#xff0c;对数据库操作进行细粒度审计的合规性管理&#xff0c;对数据库遭受到的风险行为进行实时告警。它通过对用户访问数据…...

gc和gccgo编译器

Go 语言有两个主要的编译器&#xff0c;分别是 Go 编译器&#xff08;通常简称为 gc&#xff09;和 GCCGO。它们之间有一些重要的异同点&#xff1a; gc 编译器&#xff1a; gc 是 Go 语言的官方编译器&#xff0c;由 Go 语言的开发团队维护。它是 Go 语言最常用的编译器&#…...

开放重定向漏洞

开放重定向漏洞 1.开放重定向漏洞概述2.攻击场景&#xff1a;开放重定向上传 svg 文件3.常见的注入参数 1.开放重定向漏洞概述 开放重定向漏洞&#xff08;Open Redirect&#xff09;是指Web应用程序接受用户提供的输入&#xff08;通常是URL参数&#xff09;&#xff0c;并将…...

基于YoloV4汽车多目标跟踪计数

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着城市交通的快速发展&#xff0c;交通流量和车辆密度的不断增加&#xff0c;对交通管理和控…...

交叉编译程序,提示 incomplete type “struct sigaction“ is not allowed

问题描述 incomplete type "struct sigaction" is not allowed解决办法 在代码的最顶端添加如下代码即可 #define _XOPEN_SOURCE此定义不是简单的宏定义&#xff0c;是使程序符合系统环境的不可缺少的部分 _XOPEN_SOURCE为了实现XPG&#xff1a;The X/Open Porta…...

叶面积指数(LAI)数据、NPP数据、GPP数据、植被覆盖度数据获取

引言 多种卫星遥感数据反演叶面积指数&#xff08;LAI&#xff09;产品是地理遥感生态网推出的生态环境类数据产品之一。产品包括2000-2009年逐8天数据&#xff0c;值域是-100-689之间&#xff0c;数据类型为32bit整型。该产品经过遥感数据获取、计算归一化植被指数、解译植被类…...

光环P3O不错的一个讲座

光环P3O不错的一个讲座&#xff0c;地址&#xff1a;https://apphfuydjku5721.h5.xiaoeknow.com/v2/course/alive/l_663dc840e4b0694c62c32d1d?app_idapphfuydJkU5721&share_fromu_5c987304d8515_wH2E5HgCgx&share_type5&share_user_idu_5c987304d8515_wH2E5HgCgx…...

Typescnipt 学习笔记

TypeScript 学习笔记 一、什么是 TypeScript TypeScript 是一种由微软开发的开源编程语言&#xff0c;它是 JavaScript 的一个超集。它添加了静态类型和面向对象的特性&#xff0c;并提供了更强大的工具和功能&#xff0c;以增强 JavaScript 的开发体验。 二、为什么要学习 …...

如何在 Ubuntu 24.04 (桌面版) 上配置静态IP地址 ?

如果你想在你的 Ubuntu 24.04 桌面有一个持久的 IP 地址&#xff0c;那么你必须配置一个静态 IP 地址。当我们安装 Ubuntu 时&#xff0c;默认情况下 DHCP 是启用的&#xff0c;如果网络上可用&#xff0c;它会尝试从 DHCP 服务器获取 IP 地址。 在本文中&#xff0c;我们将向…...

小恐龙跳一跳源码

小恐龙跳一跳源码是前两年就火爆过一次的小游戏源码&#xff0c;不知怎么了今年有火爆了&#xff0c;所以今天就吧这个源码分享出来了&#xff01;有喜欢的直接下载就行&#xff0c;可以本地单机直接点击index.html进行运行&#xff0c;又或者放在虚拟机或者服务器上与朋友进行…...

快手二面准备【面试准备】

快手二面准备【面试准备】 前言版权快手二面准备秋招一面中的问题实习一面中的问题计算机网络和操作系统论坛项目登录注册ThreadLocal代替session存储用户秒杀项目登录注册->阿里验证码->rpcsession为什么改为token实现&#xff0c;redis存储用户信息由binlog的用法->…...

贪心算法2(c++)

最大子矩阵 描述 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵&#xff0c;你的任务是找到最大的非空(大小至少是1*1)子矩阵。 比如&#xff0c;如下4*4的矩阵 0- 2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0-2 的最大子矩阵是 9 2 -4 1 -18 这个子矩阵的大小是15。 输入…...

Bugku Crypto 部分题目简单题解(四)

目录 python_jail 简单的rsa 托马斯.杰斐逊 这不是md5 进制转换 affine Crack it rsa python_jail 启动场景 使用虚拟机nc进行连接 输入print(flag) 发现报错&#xff0c;经过测试只能传入10个字符多了就会报错 利用python中help()函数&#xff0c;借报错信息带出flag变…...

软考备考三

操作系统 操作系统概述 功能&#xff1a;组织和管理软件&#xff0c;硬件资源以及计算机系统中的工作流程&#xff0c;控制程序的执行&#xff0c;向用户提供接口。 分类&#xff1a; 1.批处理操作系统 单道批 多道批&#xff08;宏观上并行&#xff0c;微观上串行&#xff09…...

实战应用:基于快马定制企业级ventoy维护盘,集成系统修复与数据恢复工具

今天想和大家分享一个实战项目&#xff1a;如何用InsCode(快马)平台快速打造一个企业级Ventoy维护盘。这个方案特别适合IT技术支持人员&#xff0c;能大幅提升日常维护效率。 项目背景与需求分析 日常工作中经常遇到需要重装系统、重置密码、恢复数据等场景。传统PE工具功能单一…...

Qwen3.5-9B开源可部署实践:国产昇腾910B适配方案(CANN+PyTorch NPU移植)

Qwen3.5-9B开源可部署实践&#xff1a;国产昇腾910B适配方案&#xff08;CANNPyTorch NPU移植&#xff09; 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。该模型特别针对国产昇腾910B处理器进行了优化…...

为什么钉钉、飞书、企微都在做 CLI?这个开源项目给出了最极致的答案

❝AI Agent 很聪明&#xff0c;但面对真实的专业软件&#xff0c;它就是个"睁眼瞎"。CLI-Anything 说&#xff1a;我来治。❞先说一个扎心的事实2026年了&#xff0c;AI Agent 能写代码、能做分析、能聊天能画画——但你让它打开 Blender 建个模&#xff1f;让它用 G…...

OpenClaw未来展望:Qwen3-14B与本地自动化的5个进化方向

OpenClaw未来展望&#xff1a;Qwen3-14B与本地自动化的5个进化方向 1. 从工具到伙伴&#xff1a;OpenClaw的现状与定位 去年冬天&#xff0c;当我第一次在本地MacBook上部署OpenClaw时&#xff0c;它还是个需要手动配置JSON文件才能调用本地模型的"半成品"。如今看…...

SEO_10个提升网站排名的实用SEO技巧分享(370 )

SEO:10个提升网站排名的实用SEO技巧分享 在当今的互联网时代&#xff0c;一个网站的成功离不开搜索引擎优化&#xff08;SEO&#xff09;。SEO不仅仅是一套技术&#xff0c;更是一种思维方式。本文将详细分享十个实用的SEO技巧&#xff0c;帮助你提升网站的排名&#xff0c;吸…...

MCP3208 12位SPI ADC嵌入式驱动与硬件设计实战

1. MCP3208芯片深度解析&#xff1a;面向嵌入式系统的12位8通道SPI模数转换器工程实践1.1 芯片定位与核心价值MCP3208是Microchip公司推出的逐次逼近型&#xff08;SAR&#xff09;模数转换器&#xff0c;专为资源受限的嵌入式系统设计。其核心价值在于以极简硬件接口&#xff…...

无代码自动化:OpenClaw+Qwen3.5-9B可视化流程搭建

无代码自动化&#xff1a;OpenClawQwen3.5-9B可视化流程搭建 1. 为什么选择OpenClawQwen3.5-9B组合 去年夏天&#xff0c;我发现自己每周要花3小时重复做三件事&#xff1a;整理会议录音、提取待办事项、设置日历提醒。当我尝试用传统自动化工具时&#xff0c;要么需要写代码…...

抑制素A抗体如何提升妊娠中期唐氏综合征筛查的效能?

一、为何抑制素A成为妊娠期的重要生物标志物&#xff1f;抑制素A是一种由α和βA亚基通过二硫键连接形成的异源二聚体糖蛋白。在非妊娠期&#xff0c;它主要由卵巢颗粒细胞分泌&#xff0c;作为反馈调节因子&#xff0c;选择性地抑制垂体前叶分泌卵泡刺激素。进入妊娠状态后&am…...

新手零基础入门:通过快马生成burpsuite超详细安装图解教程

作为一名网络安全新手&#xff0c;第一次接触BurpSuite时确实容易被各种专业术语和复杂的安装步骤吓到。今天我就用最直白的方式&#xff0c;手把手带你完成BurpSuite的安装&#xff0c;让你轻松迈出Web安全测试的第一步。 什么是BurpSuite&#xff1f;为什么需要它&#xff1…...

3步搭建高效NTQQ机器人:LuckyLilliaBot全功能配置指南

3步搭建高效NTQQ机器人&#xff1a;LuckyLilliaBot全功能配置指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一款基于OneBot11协议的NTQQ机器人框架&#xff0c;它能帮助开发…...