解决问题:

knife4j 和 springboot3的不兼容问题, 可以使用增强模式

springboot版本:

springboot 3.5.6

jdk21

knife4j版本:

4.4.0

  1. springboot 依赖
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.6</version>
        <relativePath/>
    </parent>
  1. 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>
  1. 增强
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 版本配置

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐