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

SpringBoot3.x整合Knife4j接口文档

记录下SpringBoot3.x整合Knife4j接口文档时的步骤以及开发中的常见报错问题。

1.依赖

<!--        接口文档,访问地址:ip:port/doc.html-->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version>
</dependency>

2.配置

package com.base.config;import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SwaggerConfig {@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("接口文档标题").version("1.0.0").description("接口描述").contact(new Contact().name("开发者").email("dev@example.com")).license(new License().name("Apache 2.0").url("https://www.apache.org/licenses/LICENSE-2.0.html"))).externalDocs(new ExternalDocumentation().description("项目主页").url("https://github.com/xxx/xxx"));}
}

image-20250628121047365

3.用法细节

  • 如果不想全部controller都扫描到,可以用@Hidden注解隐藏不显示
  • 在controller类名上加@Tag(name = "xxx"),具体方法名加@Operation(summary = "xxx")
  • 配置文档需登录后访问

application.yml配置如下:

knife4j:enable: truebasic:enable: trueusername: xxxpassword: xxx

image-20250628120355691

  • 原UI页面显示

application.yml配置如下:

springdoc:swagger-ui:
#    访问原UI界面:ip:port/swagger-ui/index.htmlpath: /swagger-ui.htmltags-sorter: alphaoperations-sorter: alphaapi-docs:path: /v3/api-docsgroup-configs:- group: 'default'paths-to-match: '/**'packages-to-scan: com.base.controller

image-20250628121019994

附录:可能会遇到问题

问题1

控制台提示favicon.ico未找到

org.springframework.web.servlet.resource.NoResourceFoundException: No static resource favicon.ico.at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585)at 

解决1

加一个 favicon.icostatic/ 目录。(如果你不关心这个 favicon,可以忽略这个异常)

image-20250628110509058

问题2

控制台提示.well-known/appspecific/com.chrome.devtools.json未找到

2025-06-28T10:40:49.872+08:00  WARN 9924 --- [nio-8888-exec-4] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.servlet.resource.NoResourceFoundException: No static resource .well-known/appspecific/com.chrome.devtools.json.]
org.springframework.web.servlet.resource.NoResourceFoundException: No static resource .well-known/appspecific/com.chrome.devtools.json.at org.sprin

解决2

拦截 .well-known/ 路径,返回空响应或 404(推荐给控制台干净控)

@RestController
public class WellKnownController {@RequestMapping("/.well-known/**")public ResponseEntity<Void> handleUnknownWellKnown() {return ResponseEntity.notFound().build(); // 返回 404,或改为返回 204 无内容}
}

相关文章:

  • HarmonyOS应用开发实验操作步骤
  • Python 数据分析与可视化 Day 10 - 数据合并与连接
  • HashMap 和 ConcurrentHashMap的区别
  • Python 数据分析:numpy,抽提,整数数组索引。听故事学知识点怎么这么容易?
  • C++泛型编程2 - 类模板
  • 基于LQR控制器的六自由度四旋翼无人机模型simulink建模与仿真
  • 「Java案例」古代重量单位转换
  • 力扣 刷题(第七十一天)
  • 湖北理元理律师事务所:债务优化中的法律理性与人文温度
  • MySQL 索引 -- 磁盘,主键索引,唯一索引,普通索引,全文索引
  • cocos creator 3.8 - 精品源码 - 挪车超人(挪车消消乐)
  • 【学习】《算法图解》第七章学习笔记:树
  • 设计模式(策略,工厂,单例,享元,门面)+模板方法
  • spring-ai-alibaba DashScopeCloudStore自动装配问题
  • Pytest自动化测试执行环境切换的2种解决方案
  • Word之空白页删除2
  • 访问不了/druid/index.html (sql.html 或 login.html)
  • 自学嵌入式 day26 - 系统编程 文件io 目录操作
  • Insar 相位展开真实的数据集的生成与下载(随机矩阵放大,zernike 仿真包裹相位)
  • 【编译原理】期末