当前位置: 首页 > news >正文

MyBatis-Plus 非 Spring 环境使用时 `GenericTypeResolver` 缺失问题总结

MyBatis-Plus 非 Spring 环境使用时 GenericTypeResolver 缺失问题总结

问题描述

在非 Spring 环境中使用 MyBatis-Plus 3.4.3.1 及以上版本时,启动程序会抛出以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/GenericTypeResolver
at com.baomidou.mybatisplus.core.toolkit.reflect.SpringReflectionHelper.resolveTypeArguments(...)

该错误是由于 MyBatis-Plus 的部分工具类依赖 Spring 核心库中的 GenericTypeResolver 类,但项目未引入 Spring 相关依赖导致的。

问题原因
  1. 依赖变化
    MyBatis-Plus 从 3.4.3.1 版本开始,其内部反射工具类(如 SpringReflectionHelperReflectionKit)直接依赖 Spring 的 org.springframework.core.GenericTypeResolver,用于处理类型解析逻辑。

    • 即使项目不使用 Spring 框架,只要使用 MyBatis-Plus 3.4.3.1 及以上版本,就必须引入 Spring 核心依赖。
  2. 历史版本差异

    • 3.4.3 及之前版本:不强制依赖 Spring 核心库,但可能存在其他问题(如 Lambda 表达式支持不完整)。
    • 3.4.3.1 及之后版本:为修复部分功能(如 Lambda 语法兼容性),引入了对 Spring 核心库的依赖。
解决方案

在项目中添加 Spring 核心库依赖(仅需轻量级的 spring-core,无需引入完整 Spring 框架):

Maven 依赖
<dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-core</artifactId>  <version>5.3.29</version> <!-- Java8最新稳定版,根据项目需求调整 -->  
</dependency>  
Gradle 依赖
implementation 'org.springframework:spring-core:5.3.29'  
版本选择建议
版本范围依赖要求注意事项
3.4.3 及之前无需 Spring 核心依赖可能存在 Lambda 表达式兼容性问题(如条件构造器的 Lambda 语法异常)。
3.4.3.1 及以上必须添加 spring-core 依赖修复了 Lambda 表达式等功能,但引入 Spring 依赖;适合需要稳定 Lambda 支持的场景。
总结
  1. 非 Spring 环境限制
    MyBatis-Plus 3.4.3.1 及以上版本在非 Spring 项目中无法完全脱离 Spring 核心库,必须添加 spring-core 依赖以解决类型解析工具的类缺失问题。

  2. 依赖最小化
    只需引入 spring-core 单包(约 2MB),无需其他 Spring 模块,对项目轻量化影响极低。

  3. 版本兼容性

    • 若项目未使用 Lambda 复杂语法,可尝试 3.4.3 版本(避免依赖 Spring),但需注意潜在兼容性问题。
    • 推荐使用 3.5.x 及以上版本,并按上述方案添加依赖,以获得完整功能和稳定性。
参考资料
  • MyBatis-Plus GitHub Issue:#4223 3.4.3.1及其以上版本 依赖于Spring-core,无法脱离Spring使用
  • Spring Core 官方文档:Spring Core Module

通过添加 spring-core 依赖,可快速解决 GenericTypeResolver 缺失问题,确保 MyBatis-Plus 在非 Spring 环境中正常运行。

相关文章:

  • Auto.js 脚本:清理手机数据但保留账号
  • 林业数智化转型初步设计方案
  • 「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例
  • 二项式反演 系列 题解
  • 【蓝牙协议栈】【BR/EDR】【AVCTP】精讲音视频控制传输协议
  • BUUCTF 大流量分析(一) 1
  • AUTOSAR图解==>AUTOSAR_SRS_CryptoStack
  • 从0开始学习大模型--Day01--大模型是什么
  • Linux 常用指令详解
  • tensorflow 调试
  • Lombok 是什么?
  • 014枚举之指针尺取——算法备赛
  • 【Linux网络#17】TCP全连接队列与tcpdump抓包
  • LeetCode 热题 100 78. 子集
  • 洛谷 P9007 [入门赛 #9] 最澄澈的空与海 (Hard Version)
  • N-Gram 模型
  • 基于Vue3开发:打造高性能个人博客与在线投票平台
  • Java---Object和内部类
  • 协程补充---viewModelScope 相关知识点
  • 蓝桥杯 19. 植树
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南院展出
  • 长三角铁路今日预计发送386万人次,沪宁、沪杭等方向尚有余票
  • 四人自驾游宣恩因酒店爆满无处住宿,求助文旅局后住进局长家
  • 执掌伯克希尔60年,股神巴菲特宣布年底交出最终决定权:阿贝尔将接任CEO
  • 因雷雨、沙尘等天气,这些机场航班运行可能受影响
  • 人民日报头版头条:青春为中国式现代化挺膺担当