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

相关推荐

  • 电商用户流失预测新思路:Java大数据与机器学习融合实战

    🌟亲爱的技术爱好者们,诚挚欢迎来到【云端技术社区】!在这个数据驱动的时代,我们致力于打造一个技术交流的优质平台。这里汇聚前沿技术解析与实践经验,期待您的真知灼见,让我们共同探索技术创新的无限可能!🌟全网平台(微信公众号/CSDN/抖音/华为/支付宝/微博):云端技术一、加入【技术精英社群】快速通道1:【云端技术精英圈】快速通道2:【CSDN技术创作营】二、核…

    2025 年 5 月 19 日
    18000
  • 深入掌握Map的这8个操作方法,让代码更简洁优雅

    # Map接口及其子类的高效方法应用 在编程世界中,`Map` 接口及其子类如 `HashMap` 和 `ConcurrentHashMap` 是我们频繁使用的集合类型。熟悉 `Map` 接口提供的方法,意味着你已经掌握了其子类中的方法,无论它们是否为并发集合。 自 JDK 8 以来,`Map` 接口引入了一些创新的方法,这些方法极大地提升了数据操作的便捷性…

    未分类 2024 年 12 月 24 日
    35500
  • Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?

    大家好,我是汤师爷~ 这篇聊聊 Bolt.new 和 Cursor 的对比。 Bolt.new 是一款基于 SaaS 的 AI 编码平台。它由 LLM 驱动的智能体作为底层,并结合 WebContainers 技术,让用户可以直接在浏览器中进行编码和运行。其主要优势包括: 支持前后端同时开发; 项目文件夹结构可视化; 环境自托管,自动安装依赖(如 Vite、…

    2025 年 1 月 15 日
    41500
  • 《重构:改善既有代码的设计(第2版)》PDF、EPUB免费下载

    电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: [美] Martin Fowler出版社: 人民邮电出版社出品方: 异步图书副标题: 改善既有代码的设计原作名: Refactoring: Improving the Design of Existing Code,Second Edition译者: …

    2025 年 1 月 10 日
    32400
  • 【创新毕设】基于SpringBoot的校园二手交易系统设计与实现(附源码)支持多语言开发

    目录架构 研究背景与意义国内外研究综述论文框架说明系统可行性论证功能需求解析数据库设计方案核心功能实现系统测试方案 研究背景 在数字经济高速发展的当下,校园内闲置物品流转需求日益增长。传统交易模式存在信息不对称、交易效率低下等问题。本系统采用SpringBoot框架构建,通过线上平台实现二手物品的高效流通,既促进资源循环利用,又能培养学生环保意识。系统支持J…

    未分类 2025 年 5 月 19 日
    41600

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信