news 2026/4/18 2:24:53

knife4j+springboot3.4异常无法正确展示文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
knife4j+springboot3.4异常无法正确展示文档

场景复现:

  • knife4j-openapi3-jakarta-spring-boot-starter版本

    com.github.xiaoymin knife4j-openapi3-jakarta-spring-boot-starter 4.5.0
  • 原来使用springboot3.3.5版本,先升级到3.4.0版本

  • 通过http://ip:port/doc.html访问接口文档发现访问/v3/api-docs接口时报

    Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.(java.lang.Object)

通过分析异常日志发现是ControllerAdviceBean类报错,在springboot3.3.5时spring-web版本是6.1.14,springboot3.4版本是6.2.0版本。

通过springboot全局异常捕获堆栈信息发现:

org.springdoc.core.service.GenericResponseService.lambda$getGenericMapResponse$8(GenericResponseService.java:702)

GenericResponseService类是在如下包:

<!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-common --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-common</artifactId> <version>2.3.0</version> </dependency>

GenericResponseService类的702行代码如下(ControllerAdviceBean类使用一个参数的构造函数,但是报异常):

List<ControllerAdviceInfo> controllerAdviceInfosNotInThisBean = controllerAdviceInfos.stream() .filter(controllerAdviceInfo -> new ControllerAdviceBean(controllerAdviceInfo.getControllerAdvice()).isApplicableToBeanType(beanType)) .filter(controllerAdviceInfo -> !beanType.equals(controllerAdviceInfo.getControllerAdvice().getClass())) .toList();

spring-web6.1.14版本中ControllerAdviceBean的构造函数:

public ControllerAdviceBean(Object bean) { Assert.notNull(bean, "Bean must not be null"); this.beanOrName = bean; this.isSingleton = true; this.resolvedBean = bean; this.beanType = ClassUtils.getUserClass(bean.getClass()); this.beanTypePredicate = createBeanTypePredicate(this.beanType); this.beanFactory = null; }

spring-web6.2.0版本中ControllerAdviceBean的构造函数:

public ControllerAdviceBean(String beanName, BeanFactory beanFactory, ControllerAdvice controllerAdvice) { Assert.hasText(beanName, "Bean name must contain text"); Assert.notNull(beanFactory, "BeanFactory must not be null"); Assert.isTrue(beanFactory.containsBean(beanName), () -> "BeanFactory [" + beanFactory + "] does not contain specified controller advice bean '" + beanName + "'"); Assert.notNull(controllerAdvice, "ControllerAdvice must not be null"); this.beanName = beanName; this.isSingleton = beanFactory.isSingleton(beanName); this.beanType = getBeanType(beanName, beanFactory); this.beanTypePredicate = createBeanTypePredicate(controllerAdvice); this.beanFactory = beanFactory; }

此类中的构造函数已经变更为4个,已经不存在一个参数的构造函数了。

  • springdoc-openapi-starter-common文档当前已经升级到2.7.0版本

    org.springdoc springdoc-openapi-starter-common 2.7.0

结论:期待knife4j-openapi3-jakarta-spring-boot-starter早日升级,兼容最新版本的spring;

开源SDK:https://github.com/mingyang66/spring-parent

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 5:14:52

MS SQL Server 实战 统计与汇总重复记录

目录 需求 范例运行环境 数据样本设计 功能实现 上传EXCEL文件到数据库 分组统计 SQL 语句 分组汇总 SQL 语句 having 语句过滤最终统计结果 小结 需求 在日常的数据管理应用中&#xff0c;统计和汇总重复记录的情况是经常遇到的一个问题&#xff0c;然后我们会根据统…

作者头像 李华
网站建设 2026/4/10 10:24:51

Modbus报文详解

Modbus是一种串行通信协议&#xff0c;最初由Modicon公司&#xff08;现为施耐德电气的一部分&#xff09;在1979年为使用其PLC&#xff08;可编程逻辑控制器&#xff09;而开发。Modbus已成为工业领域内广泛使用的一种通信协议&#xff0c;特别是对于监控和控制系统。Modbus协…

作者头像 李华
网站建设 2026/4/16 15:49:05

Java进阶,时间与日期,包装类,正则表达式

Java时间与日期&#xff0c;包装类&#xff0c;正则表达式 一.时间与日期 1.Date Date类概述 Date类代表当前所在系统的日期时间信息。 Date的构造器 名称 说明 public Date() 创建一个Date对象&#xff0c;代表的是系统当前此刻日期时间。 Date的常用方法 名称 说明 public lo…

作者头像 李华
网站建设 2026/4/4 23:49:23

LeetCode动态规划经典题:Unique Paths 网格路径计数详解

这道题是典型的动态规划入门题&#xff0c;非常适合练习二维 DP 的建模思路。leetcode1 题目概述 在一个 mn 的网格上&#xff0c;有一个机器人从左上角 (0,0) 出发&#xff0c;只能向右或向下移动一步。leetcode 目标是到达右下角 (m−1,n−1)&#xff0c;要求计算一共有多…

作者头像 李华
网站建设 2026/3/26 6:04:33

【课程设计/毕业设计】基于深度学习机器学习的土豆疾病识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/12 18:46:10

计算机深度学习毕设实战-卷神经网络基于深度学习的土豆疾病识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华