解决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
上一篇 2025 年 5 月 12 日
下一篇 2025 年 5 月 12 日

相关推荐

  • Microi 吾码与 JavaScript:前端低代码平台的强大组合

    目录 一、引言 二、Microi 吾码概述 三、JavaScript 在 Microi 吾码前端开发中的应用 (一)前端 V8 引擎与 JavaScript (二)接口引擎与 JavaScript 四、JavaScript 在 Microi 吾码后端开发中的协同 (一)与 C# 后端框架的交互 (二)利用 gRPC 实现跨语言通信 五、Microi 吾码中 …

    2025 年 1 月 12 日
    43200
  • PyCharm最新2024永久激活码,PyCharm破解教程(Pycharm插件推荐)

    PyCharm是JetBrains公司开发的一款广受欢迎的Python集成开发环境(IDE),以其强大的功能和智能化的操作界面受到广大Python开发者的青睐。 给大家整理了PyCharm永久激活码,PyCharm破解教程,需要的直接浏览器访问: docs.qq.com/doc/DWHB5YUV6UVRWd0ZR PyCharm不仅内置了丰富的功能,还支持各…

    未分类 2024 年 7 月 31 日
    3.4K00
  • 华为OD机试E卷 –考勤信息–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 公司用一个字符串来表示员工的出勤信息• absent:缺勤• late:迟到• leaveearly:早退• present:正常上班现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:• 缺…

    未分类 2024 年 12 月 28 日
    72000
  • 比想象中更复杂一点的MySQL Slow Query Log

    1. 问题概述 在分析 Slow Query Log 时,记录下的SQL语句,明明会对一张表执行全表扫描,可为什么慢日志中的 Rows_sent 、Rows_examined 和表的真实记录数也是不一样,甚至相差N多倍。还有一个细节就是上述的SQL语句,执行多次,在慢日志中记录下多条记录,记录之间Rows_sent 、Rows_examined也差别明显。 …

    未分类 2025 年 1 月 15 日
    45800
  • 2025 年最好的谷歌地图数据采集软件推荐

    2024 年,谷歌地图抓取已成为企业和研究人员的一大变革。凭借不断更新的餐厅、酒店、药店等数据库,谷歌地图提供了大量信息。通过使用正确的谷歌地图抓取工具,您可以解锁有价值的见解,以进行潜在客户生成、市场研究和竞争分析。最好的谷歌地图抓取工具使您能够自动收集数据,节省时间和资源,同时确保准确性。无论您是想分析竞争对手还是扩大客户群,这些工具都能为您提供成功所需…

    未分类 2025 年 1 月 6 日
    46800

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信