Spring Boot 2.x/3.x/4.x 版本兼容的最新MyBatis-Plus依赖
背景
在 Spring Boot 最新的 4.0.3 版本(截止 2026 年 3 月 7 日)中,使用 MyBatis-Plus,在启动项目时,有如下报错:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v4.0.3) 2026-03-07T17:58:14.685+08:00 INFO 3028 --- [backend] [ main] com.sun3285.backend.BackendApplication : Starting BackendApplication using Java 17.0.9 with PID 3028 (K:\项目\warehouse\backend\target\classes started by Sun3285 in K:\项目\warehouse) 2026-03-07T17:58:14.687+08:00 INFO 3028 --- [backend] [ main] com.sun3285.backend.BackendApplication : No active profile set, falling back to 1 default profile: "default" 2026-03-07T17:58:14.994+08:00 WARN 3028 --- [backend] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file [K:\项目\warehouse\backend\target\classes\com\sun3285\backend\mapper\UserMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 2026-03-07T17:58:14.997+08:00 INFO 3028 --- [backend] [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2026-03-07T17:58:15.005+08:00 ERROR 3028 --- [backend] [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file [K:\项目\warehouse\backend\target\classes\com\sun3285\backend\mapper\UserMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:857) ~[spring-beans-7.0.5.jar:7.0.5] at org.springframework.beans.factory.support.AbstractBeanFactory.getType(AbstractBeanFactory.java:740) ~[spring-beans-7.0.5.jar:7.0.5] at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAnnotationOnBean(DefaultListableBeanFactory.java:811) ~[spring-beans-7.0.5.jar:7.0.5] at org.springframework.boot.sql.init.dependency.AnnotationDependsOnDatabaseInitializationDetector.detect(AnnotationDependsOnDatabaseInitializationDetector.java:36) ~[spring-boot-sql-4.0.3.jar:4.0.3] at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.detectDependsOnInitializationBeanNames(DatabaseInitializationDependencyConfigurer.java:155) ~[spring-boot-sql-4.0.3.jar:4.0.3] at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.postProcessBeanFactory(DatabaseInitializationDependencyConfigurer.java:118) ~[spring-boot-sql-4.0.3.jar:4.0.3] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:363) ~[spring-context-7.0.5.jar:7.0.5] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:197) ~[spring-context-7.0.5.jar:7.0.5] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:795) ~[spring-context-7.0.5.jar:7.0.5] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:603) ~[spring-context-7.0.5.jar:7.0.5] at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-web-server-4.0.3.jar:4.0.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) ~[spring-boot-4.0.3.jar:4.0.3] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) ~[spring-boot-4.0.3.jar:4.0.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) ~[spring-boot-4.0.3.jar:4.0.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) ~[spring-boot-4.0.3.jar:4.0.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-4.0.3.jar:4.0.3] at com.sun3285.backend.BackendApplication.main(BackendApplication.java:12) ~[classes/:na] Process finished with exit code 1
借助大模型,问题定位在:Invalid value type for attribute 'factoryBeanObjectType': java.lang.String。
根本原因为:MyBatis-Plus 版本与 Spring Boot 4.0.3 不兼容。
此时,pom.xml 文件中,MyBatis-Plus 的依赖如下:
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.16</version>
<scope>compile</scope>
</dependency>
通过查阅资料,将 MyBatis-Plus 版本与 Spring Boot 版本进行兼容后,启动项目无报错,运行成功。
借此机会,以下对分别与 Spring Boot 2.x/3.x/4.x 版本兼容的最新 MyBatis-Plus 依赖(截止 2026 年 3 月 7 日)进行总结。
Spring Boot 2.x 与 MyBatis-Plus 兼容
在 pom.xml 文件中,需要引入以下 MyBatis-Plus 的依赖(2026 年 1 月 11 日发布):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.16</version>
<scope>compile</scope>
</dependency>
Spring Boot 3.x 与 MyBatis-Plus 兼容
在 pom.xml 文件中,需要引入以下 MyBatis-Plus 的依赖(2026 年 1 月 11 日发布):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.16</version>
<scope>compile</scope>
</dependency>
Spring Boot 4.x 与 MyBatis-Plus 兼容
在 pom.xml 文件中,需要引入以下 MyBatis-Plus 的依赖(2026 年 1 月 11 日发布):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot4-starter</artifactId>
<version>3.5.16</version>
<scope>compile</scope>
</dependency>
到此这篇关于Spring Boot 2.x/3.x/4.x 版本兼容的最新MyBatis-Plus依赖的文章就介绍到这了,更多相关Spring Boot 版本兼容MyBatis-Plus 依赖内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


最新评论