还在用 Knife4j?试试 Knife4j Next
如果你做过 Java 后端项目,大概率见过 doc.html。
很多团队不是不知道 Swagger UI,也不是不会用 springdoc-openapi,而是已经习惯了 Knife4j 这套更适合国内团队的接口文档体验:接口分组、参数说明、在线调试、全局参数、鉴权配置、离线文档导出,以及那个启动后直接访问的 /doc.html。
问题在于,Java 生态这几年变化很快。
Spring Boot 2.7、Spring Boot 3.x、Jakarta namespace、springdoc-openapi 2.x,再到 Spring Boot 4.x 和 Spring Framework 7,这些变化都在持续推着项目升级。一个 API 文档工具如果不能跟上这些版本线,就会慢慢从“顺手的开发工具”变成“升级时绕不开的历史包袱”。
这也是我维护 Knife4j Next 的原因。
它不是一个全新项目,而是 Knife4j 的社区维护 fork。目标也不玄乎:让已经熟悉 Knife4j 的团队,继续保留 doc.html 的使用习惯,同时把 Spring Boot 2.7 / 3.x / 4.x 这些现实版本线继续维护下去。
先看现在的界面
Knife4j Next 不是只换了 Maven 坐标。OpenAPI3 主线已经接入 React + Vite 新前端,页面观感和交互都比旧印象里那种传统 Swagger 页面舒服很多。
这是文档首页和接口分组概览:

接口详情页更适合阅读参数、响应结构和模型说明:

在线调试也保留了 Knife4j 最常用的工作流:在文档页里直接构造请求、预览请求、查看响应。

对很多后端团队来说,这种“文档能看,接口能调”的一体化体验,比单纯生成一份 OpenAPI JSON 更重要。
它解决的不是新鲜感,而是延续性
我对 Knife4j Next 的定位一直很明确:它不是要重写一个和原项目没有关系的新东西,而是尽量降低现有用户的迁移成本。
迁移时最关键的几件事都保持不变:
- 访问入口仍然是
/doc.html v2/api-docs/v3/api-docs入口保持兼容- Java 包名仍然是
com.github.xiaoymin.knife4j.* knife4j.*配置键保持兼容@ApiOperationSupport、@ApiSupport等既有注解继续保留
真正需要改的,主要是 Maven groupId:
1 | <dependency> |
如果你是 Spring Boot 3.x + OpenAPI3 / springdoc 这条线,通常就是把原来的 com.github.xiaoymin 换成 com.baizhukui,版本升到当前稳定版,然后启动应用访问 /doc.html 验证。
这类迁移我最看重的是可回滚。因为业务代码、注解 import、配置键都不需要大改,所以它不是一次架构迁移,更像是一次依赖替换。
兼容性是这类工具的生命线
API 文档工具看起来是前端页面,真正麻烦的地方却经常在后端依赖组合。
Spring Boot 2.x 时代有 Springfox 和 springdoc-openapi 1.x;Spring Boot 3.x 进入 Jakarta 后,要处理 springdoc-openapi 2.x;Spring Boot 4.x 又进入 springdoc-openapi 3.x 和 Spring Framework 7 的组合。
Knife4j Next 现在按不同技术线拆开维护:
| 场景 | 推荐 starter |
|---|---|
| Spring Boot 2.x + Springfox / Swagger2 | knife4j-openapi2-spring-boot-starter |
| Spring Boot 2.x + springdoc-openapi / OpenAPI3 | knife4j-openapi3-spring-boot-starter |
| Spring Boot 3.x + Jakarta / OpenAPI3 | knife4j-openapi3-jakarta-spring-boot-starter |
| Spring Boot 4.x + OpenAPI3 | knife4j-openapi3-boot4-spring-boot-starter |
| Spring Cloud Gateway 3.x | knife4j-gateway-spring-boot-starter |
| Spring Cloud Gateway 5 / Boot 4.x | knife4j-gateway-boot4-spring-boot-starter |
这也是为什么 Boot 4 没有直接复用 Boot 3 的 Jakarta starter,而是单独做了一条 boot4 starter。依赖线分开,老项目不会被新依赖强行拖着走,新项目也能跟上 Spring Boot 4。
目前项目里有 smoke tests 覆盖 Boot 2.7 的 OAS2/OAS3、Boot 3.4 / 3.5 Jakarta、Boot 4 WebMVC 和 Boot 4 Gateway 等组合。对一个文档增强工具来说,这些验证比“理论上兼容”更有意义。
OpenAPI2 兼容维护,OpenAPI3 继续往前
Knife4j Next 里有两条前端线,最好提前说清楚。
OpenAPI2 / Springfox 这条线使用本仓库里的 Vue3 UI,目标是兼容维护。它适合还没迁出 Springfox 的老项目,重点是保持能用、修回归,不会再追求大量新功能。
OpenAPI3 这条线使用 React + Vite 新前端,是后续主线。新 UI 已经覆盖接口文档、在线调试、模型展示、鉴权配置、离线导出、国际化等常见场景,也会继续补齐体验细节。
这意味着,如果你的项目还在 Spring Boot 2.x + Springfox,可以先用 OpenAPI2 starter 平稳过渡;如果你已经在 Spring Boot 3.x 或准备升级到 Boot 4,建议直接走 OpenAPI3 starter。
这不是为了追新,而是因为 Java 生态本身已经在往 OpenAPI3、Jakarta 和新版本 Spring 迁移。
60 秒迁移方式
以 Spring Boot 3.x 项目为例,先替换依赖:
1 | <dependency> |
最小配置可以保持很简单:
1 | knife4j: |
启动应用后访问:
1 | http://localhost:8080/doc.html |
我建议迁移后做一个很朴素的检查清单:
mvn dependency:tree里没有残留旧的com.github.xiaoymin:knife4j-*/doc.html能正常打开/v3/api-docs或/v2/api-docs返回正确内容- 如果用了
knife4j.production或knife4j.basic,生产发布前做一次黑盒验证 - 如果依赖旧版 UI 的特殊能力,先看文档里的新前端覆盖范围
更完整的步骤可以看官方迁移文档:从 upstream 迁移。
它适合哪些团队
如果你的团队满足下面任意一种情况,我觉得都可以试试 Knife4j Next:
- 项目还在使用 Knife4j,但担心后续 Spring Boot 版本升级
- 已经升级到 Spring Boot 3.x,希望继续保留
/doc.html - 想用更现代一点的 OpenAPI3 文档和调试页面
- 有网关聚合、多服务文档入口需求
- 希望依赖已经发布到 Maven Central,而不是自己维护内部 fork
它不适合什么场景也要说清楚:如果你重度依赖某些 Vue 时代的特殊前端能力,比如自定义首页、afterScript、部分旧导出能力,迁到 React 新前端前应该先核对覆盖范围。Knife4j Next 的策略不是假装所有历史功能都已经完美迁移,而是把“哪些可用,哪些还没覆盖”写清楚。
这种诚实其实很重要。工具迁移最怕的不是功能少一点,而是文档说全支持,迁完才发现关键工作流断了。
最后
Knife4j Next 想做的事情很简单:让 Knife4j 这套很多 Java 团队已经熟悉的 API 文档体验,继续在新的 Spring 生态里可用。
它保留了 /doc.html,保留了老用户熟悉的配置方式,也开始补上 Boot 3、Boot 4、Gateway、React 新前端、可重复发布流程这些现实问题。
如果你现在还在用 Knife4j,或者项目升级 Spring Boot 时卡在 API 文档工具上,可以从这几个入口开始:
- 文档站:knife4jnext.com
- GitHub:songxychn/knife4j-next
- 迁移指南:从 upstream 迁移
- Maven Central:com.baizhukui:knife4j-openapi3-jakarta-spring-boot-starter
先换一个测试项目试试。能打开熟悉的 /doc.html,看到更顺眼的新页面,再决定要不要往团队项目里推。









