knif4j 4.4.0 + springboot3.5.x 解决方案
本文介绍了解决Knife4j与SpringBoot3不兼容问题的配置方案。在SpringBoot 3.5.6和JDK21环境下,使用Knife4j 4.4.0版本,通过添加特定依赖和增强配置实现兼容。文章详细说明了依赖配置、YAML增强设置,并指出高版本可能导致接口路径混乱问题,建议降级到3.3.x版本解决。同时提供了自定义Swagger路径前缀的方法和注意事项。该方案支持增强模式下的密码认证和生
解决问题:
knife4j 和 springboot3的不兼容问题, 可以使用增强模式
springboot版本:
springboot 3.5.6
jdk21
knife4j版本:
4.4.0
- springboot 依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.6</version>
<relativePath/>
</parent>
- knife4j相关依赖
<!--1. 添加knife4j依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<!--2. openapi替换为2.8.4版本-->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.4</version>
</dependency>
<!--3. 添加jakarta-xmlbind解析-->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jakarta-xmlbind-annotations</artifactId>
<version>2.13.3</version>
</dependency>
<!--4. 添加xml.bind-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.4.0-b180830.0359</version>
</dependency>
- 增强
springdoc:
swagger-ui:
path: /swagger-ui.html
config-url: /v3/api-docs/swagger-config # Swagger 配置文件的URL
url: /v3/api-docs # OpenAPI 规范文件的URL
tags-sorter: alpha # 标签排序
operations-sorter: alpha # 操作排序,alpha: 按字母顺序排序
api-docs:
path: /v3/api-docs
# 此配置不能开启, 开启后就无法加载出接口,存在bug, 暂未测试其他解决方案
# #生成文档所需的扫包路径
# packages-to-scan: com.xxx.controller
#knife4j配置
knife4j:
#是否启用增强设置
enable: true
#开启生产环境屏蔽
production: false
#是否启用登录认证
basic:
enable: true
username: admin
password: 123456
setting:
language: zh_cn
此时就配置好了, 可以使用 增强配置 密码 及 配置生产环境. 但是测试最新的 knife4j 4.5.0仍然不行.
如果想要更改 swagger的请求路径, 修改此处即可(适合nginx代理路径作用, 跟 spring的
servlet.context-path 作用不同 )
config-url: /自定义路径前缀/v3/api-docs/swagger-config
url: /自定义路径前缀/v3/api-docs
最新问题 :
此版本如果接口路径名字一样, 比如
controller
@RequestMapping("/abc")
接口
@Operation(summary = "新增abc")
@PostMapping("/add")
xxx
另一个controller
@RequestMapping("/def")
接口
@Operation(summary = "新增def")
@PostMapping("/add")
xxx
这两个接口的路径有可能会混乱, 比如在 abc 的里面显示了 def的接口(接口请求等无问题, 仍然是打开增强模式的问题, 关闭即可解决. swagger UI的原生界面无问题) , 测试为3.4.0 版本及以上存在问题
目前降级到3.3.13 (3.3.x最新版本, 也可更低版本) 解决 可见下方 :
3.3.x 版本配置
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)