SpringBoot升级3.2报错Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String的解决方案

 更新时间:2023年12月22日 10:36:57   作者:有来技术  
这篇文章给大家介绍了SpringBoot升级3.2报错Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String的解决方案,文中有详细的原因分析,需要的朋友可以参考下

问题描述

youlai-boot 升级 Spring Boot 3.2 版本项目启动报错:

java.lang.IllegalArgumentException: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

报错截图如下:

在这里插入图片描述

原因分析

mybatis-spring 官方 ISSUE: https://github.com/mybatis/spring/issues/855

项目中使用 mybatis-plus-boot-starter 当前最新版本 3.5.4.1 ,其中依赖的 mybatis-spring 版本为 2.1.1

在 mybatis-spring 2.1.1 版本的 ClassPathMapperScanner#processBeanDefinitions 方法里将 BeanClassName 赋值给 String 变量

在这里插入图片描述

并将 beanClassName 赋值给 factoryBeanObjectType

在这里插入图片描述

但是在 Spring Boot 3.2 版本中FactoryBeanRegistrySupport#getTypeForFactoryBeanFromAttributes方法已变更,如果 factoryBeanObjectType 不是 ResolvableType 或 Class 类型会抛出 IllegalArgumentException 异常。

此时因为 factoryBeanObjectType 是 String 类型,不符合条件而抛出异常。

在这里插入图片描述

解决方案

mybatis-spring 官方 ISSUE 说明在 3.0.3 版本修复此问题

在这里插入图片描述

确实 3.0.3 版本已出

在这里插入图片描述

Mybatis-Plus 官方 ISSUE#5808 下面也说明会在 3.5.5 版本升级 mybatis-spring 依赖修复此问题,但截止到目前只有快照版本 3.5.5-SNAPSHOT

所以目前好一点的方案就是手动升级 mybatis-spring 版本为 3.0.3

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.5.4.1</version>
  <exclusions>
      <exclusion>
          <artifactId>mybatis-spring</artifactId>
          <groupId>org.mybatis</groupId>
      </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>3.0.3</version>
</dependency>

修改后再重新启动ok

在这里插入图片描述

以上就是SpringBoot升级3.2报错Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String的解决方案的详细内容,更多关于SpringBoot升级3.2报错的资料请关注脚本之家其它相关文章!

相关文章

  • Spring中bean的初始化和销毁几种实现方式详解

    Spring中bean的初始化和销毁几种实现方式详解

    这篇文章主要介绍了Spring中bean的初始化和销毁几种实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • SpringBoot集成Swagger2生成接口文档的方法示例

    SpringBoot集成Swagger2生成接口文档的方法示例

    我们提供Restful接口的时候,API文档是尤为的重要,它承载着对接口的定义,描述等,本文主要介绍了SpringBoot集成Swagger2生成接口文档的方法示例,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • JavaEE的进程,线程和创建线程的5种方式详解

    JavaEE的进程,线程和创建线程的5种方式详解

    这篇文章主要为大家详细介绍了JavaEE的进程,线程和创建线程的5种方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • SpringCloud Gateway动态路由配置详解

    SpringCloud Gateway动态路由配置详解

    这篇文章主要为大家介绍了SpringCloud Gateway动态路由配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 基于spring 方法级缓存的多种实现

    基于spring 方法级缓存的多种实现

    下面小编就为大家带来一篇基于spring 方法级缓存的多种实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java redisTemplate阻塞式处理消息队列

    Java redisTemplate阻塞式处理消息队列

    用redis中的List可以实现队列,这样可以用来做消息处理和任务调度的队列。因此,本文将主要为大家介绍如何利用redisTemplate处理消息队列,感兴趣的小伙伴可以了解一下
    2021-12-12
  • Java 关键字 volatile 的理解与正确使用

    Java 关键字 volatile 的理解与正确使用

    本文主要介绍 volatile 的使用准则,以及使用过程中需注意的地方,感兴趣的朋友一起看看吧
    2017-06-06
  • 使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能

    使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能

    这篇文章主要介绍了使用java + selenium + OpenCV破解腾讯防水墙滑动验证码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 基于Eclipse中SVN图标不显示的解决方法

    基于Eclipse中SVN图标不显示的解决方法

    本篇文章是对Eclipse中SVN图标不显示的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 使用Eclipse创建Maven的Java WEB项目的两种方式

    使用Eclipse创建Maven的Java WEB项目的两种方式

    本文详细介绍了如何在JDK 1.8、Maven 3.6.3和Eclipse 2017版本下创建Java Web项目,包括选择archetype方式、配置Tomcat、设置为Web3.1、配置Maven编译级别、修复Eclipse提示的错误、设置Maven源文件夹等步骤,需要的朋友可以参考下
    2024-11-11

最新评论