解决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 日

相关推荐

  • JavaCV 图像边缘检测 之 Canny 算法

    # 博主简介 我是**CSDN博客专家**,同时也是**历代文学网**的总架构师,拥有超过**15年**的行业经验。我精通**Java编程**,擅长**高并发系统设计**,对**Springboot和微服务架构**有深入的理解和实践经验。此外,我还熟悉**Linux操作系统**、**ESXI虚拟化技术**,以及**云原生技术栈Docker和Kubernete…

    未分类 2024 年 12 月 27 日
    72100
  • Claude Pro充值支付宝微信指南自己账号

    Claude Pro充值支付宝微信指南自己账号,适合国内用户使用微信支付宝为自己的账号完成 Claude Pro 充值、订阅或代充开通。

    未分类 2026 年 8 月 22 日
    8200
  • Claude Pro续费订阅开通开通教程

    Claude Pro续费订阅开通开通教程,整理国内用户用微信支付宝完成Claude Pro充值、订阅和代充的操作流程。

    未分类 2026 年 6 月 30 日
    23300
  • 手动部署前后端分离的项目到本地

    1.准备工作 使用maven打包springboot项目为.jar文件得到springboot-0.0.1-SNAPSHOT.jar 打包vue项目 npm install -g @vue/cli安装Vue CLI 在项目根目录下,运行npm run build命令来构建项目得到一个dist文件夹 将打包好的文件通过远程仓库中转至docker虚拟机 在虚拟机…

    2025 年 1 月 12 日
    90500
  • 『玩转Streamlit』–集成定时任务

    学习了Streamlit了之后,可以尝试给自己的命令行小工具加一个简单的界面。 本篇总结了我改造自己的数据采集的工具时的一些经验。 1. 概要 与常规的程序相比,数据采集任务的特点很明显,比如它一般都是I/O密集型程序,涉及大量网络请求或文件读写,耗费的时间比较长;而且往往是按照一定的时间间隔周期性地执行。 这样的程序对交互性要求不高,所以我之前都是用命令行…

    2025 年 1 月 16 日
    1.1K00

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信