解决Spring Boot中’factoryBeanObjectType’属性类型不匹配问题的方案

问题背景

在Spring Boot应用开发过程中,执行单元测试时可能会遇到一个棘手的类型转换异常。本文详细记录了该问题的排查过程,若您仅关注解决方案,可直接跳转至文末处理步骤。
运行环境:
- Spring Boot 3.2.1
- JDK 17
系统抛出的关键错误信息为:
"Caused by: java.lang.IllegalArgumentException: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String"
异常截图如下:
错误截图
完整的错误堆栈信息如下:

[详细错误日志内容保持不变...]

解决方案

通过分析异常信息,我们发现这是由于类型不匹配导致的。参考mybatis-spring项目的issue 855可知:
在Spring Boot 3.0及以上版本中,FactoryBeanRegistrySupport类的getTypeForFactoryBeanFromAttributes方法进行了升级,要求factoryBeanObjectType属性必须是ResolvableType或Class类型,否则会抛出IllegalArgumentException异常。
问题截图:
版本变更说明
项目当前使用的mybatis-plus-boot-starter为最新版3.5.5,但依赖的mybatis-spring版本为2.1.2,存在兼容性问题。
版本截图:
版本信息
各组件版本兼容关系如下:
兼容性对照表
具体解决步骤如下:
步骤一:移除mybatis-plus-boot-starter中的旧版mybatis-spring依赖

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

步骤二:添加新版mybatis-spring依赖

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.3</version>
</dependency>

步骤三:验证修复效果
重新执行单元测试后,系统正常运行:
测试成功截图
技术原理说明(可选阅读)
在Spring Boot 3.2.0-M2版本中,FactoryBeanRegistrySupport类的类型检查逻辑进行了强化。而在mybatis-spring 3.0.3版本中,通过反射机制将字符串类型的beanClassName转换为实际的Class对象,从而满足类型要求。
关键代码实现:

// 代码示例保持不变...

最终效果验证:
最终解决方案验证
注意事项
1. 确保所有相关依赖版本兼容
2. 建议在修改依赖后清理并重新构建项目
3. 对于复杂项目,建议逐步验证各模块功能

总结

本文详细记录了Spring Boot应用中'factoryBeanObjectType'属性类型问题的完整解决方案。如有其他疑问,欢迎通过评论区交流讨论。持续学习,共同进步!
作者信息:
| 作者 | 华仔 |
|------|------|
| 联系方式 | who.seek.me@java98k.vip |
| 原文出处 | CSDN技术社区 |
| 版权声明 | 原创内容,转载请注明出处 |

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/9210.html

(0)
LomuLomu
上一篇 2天前
下一篇 2天前

相关推荐

  • 华为OD机试E卷 –关联子串–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 给定两个 字符串 str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。若str1是str2的关联子串,请返回子串在str…

    未分类 2025 年 1 月 10 日
    12800
  • 安装MySQL-9.1.0-winx64.msi的报错解决办法:Database initialization failed

    错误日志:数据库初始化失败 开始配置步骤:编写配置文件 保存 my.ini 配置文件… 已保存 my.ini 配置文件。 结束配置步骤:编写配置文件 开始配置步骤:更新 Windows 防火墙规则 为 MySQL91 添加 Windows 防火墙规则,端口为 3306。 尝试使用命令添加 Windows 防火墙规则:netsh.exe advfirewa…

    2024 年 12 月 24 日
    36600
  • IDEA 2024永久激活破解教程,附激活码和工具,实测有效

    【最新教程】IDEA 2024.1.2 永久激活破解方法,附激活码和工具,实测有效 IntelliJ IDEA 是目前 Java 开发中最受欢迎的集成开发环境之一,其强大的功能和智能提示使其在开发者中拥有极高的声誉。本文将介绍如何通过脚本和激活码免费激活 IDEA 2024.1.2 版本,确保您能够永久使用这款软件。 一、下载安装 IntelliJ IDEA…

    未分类 2024 年 7 月 8 日
    72600
  • Slurm HPC 集群安装 Slurm-web(python Flask开源项目)

    slurm-web,也称为 slurm-wlm-web,是为 Slurm 工作负载管理器提供的一个 Web 界面。Slurm 是一个用于管理大型和小型 Linux 集群的开源、容错且高度可扩展的集群管理和作业调度系统。slurm-web 的主要功能是提供一个方便用户监控和管理 Slurm 集群的途径,而无需直接使用命令行工具。 Slurm-web 在 Slu…

    2025 年 1 月 15 日
    26900
  • 数据密集型应用系统设计PDF、EPUB免费下载

    适读人群 :所有后端开发者 英国剑桥大学分布式系统研究员力作,微软CTO联袂力荐,EMC资深架构师亲译。带你跨越从分布式理论到工程实践的鸿沟! 电子版仅供预览,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: Martin Kleppmann出版社: 中国电力出版社原作名: Designing Data-Intensive Applicati…

    2025 年 1 月 15 日
    27700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信