欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

knife4j+springboot3.4異常無法正確展示文檔

 更新時間:2025年01月13日 10:01:40   作者:立小言先森  
本文主要介紹了knife4j+springboot3.4異常無法正確展示文檔,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

場景復現(xiàn):

  • knife4j-openapi3-jakarta-spring-boot-starter版本
<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-openapi3-jakarta-spring-boot-starter -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.5.0</version>
</dependency>
  • 原來使用springboot3.3.5版本,先升級到3.4.0版本

  • 通過http://ip:port/doc.html訪問接口文檔發(fā)現(xiàn)訪問/v3/api-docs接口時報

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

通過分析異常日志發(fā)現(xiàn)是ControllerAdviceBean類報錯,在springboot3.3.5時spring-web版本是6.1.14,springboot3.4版本是6.2.0版本。

通過springboot全局異常捕獲堆棧信息發(fā)現(xiàn):

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版本
<!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-common -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-common</artifactId>
    <version>2.7.0</version>
</dependency>

結論:期待knife4j-openapi3-jakarta-spring-boot-starter早日升級,兼容最新版本的spring;

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

到此這篇關于knife4j+springboot3.4異常無法正確展示文檔的文章就介紹到這了,更多相關knife4j springboot3.4異常無法展示內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

    Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

    這篇文章主要給大家介紹了關于Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • SpringBoot中6種API版本控制策略小結

    SpringBoot中6種API版本控制策略小結

    API版本控制是確保系統(tǒng)平穩(wěn)演進的關鍵策略,這篇文章主要為大家詳細介紹了SpringBoot中6種API版本控制策略,大家可以根據需要自行選擇
    2025-04-04
  • springmvc學習筆記-返回json的日期格式問題的解決方法

    springmvc學習筆記-返回json的日期格式問題的解決方法

    本篇文章主要介紹了springmvc學習筆記-返回json的日期格式問題的解決方法,解決了日期格式的輸出,有興趣的可以了解一下。
    2017-01-01
  • Java父線程(或是主線程)等待所有子線程退出的實例

    Java父線程(或是主線程)等待所有子線程退出的實例

    下面小編就為大家分享一篇Java父線程(或是主線程)等待所有子線程退出的實例,具有很好的參考價值,希望對大家有所幫助
    2017-11-11
  • 如何使用BigDecimal實現(xiàn)Java開發(fā)商業(yè)計算

    如何使用BigDecimal實現(xiàn)Java開發(fā)商業(yè)計算

    這篇文章主要介紹了如何使用BigDecimal實現(xiàn)Java開發(fā)商業(yè)計算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • IDEA操作MongoDB及安全認證方式

    IDEA操作MongoDB及安全認證方式

    這篇文章主要介紹了IDEA操作MongoDB及安全認證方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java 7大常見排序方法實例詳解

    Java 7大常見排序方法實例詳解

    這篇文章主要通過實例介紹了Java中常用的7種排序方法,需要的朋友可以參考下
    2017-04-04
  • Java中的SkyWalking監(jiān)控告警詳解

    Java中的SkyWalking監(jiān)控告警詳解

    這篇文章主要介紹了Java中的SkyWalking監(jiān)控告警詳解,SkyWalking在6.x版本中新增了告警功能,其核心在于config/alarm-settings.yaml文件中,該文件分為rules和webhooks兩部分,需要的朋友可以參考下
    2023-11-11
  • Java深入講解instanceof關鍵字的使用

    Java深入講解instanceof關鍵字的使用

    instanceof 是 Java 的一個二元操作符,類似于 ==,>,< 等操作符。instanceof 是 Java 的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回 boolean 的數據類型
    2022-05-05
  • Spring Security注解方式權限控制過程

    Spring Security注解方式權限控制過程

    這篇文章主要介紹了Spring Security注解方式權限控制過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論