分别与 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>
更多推荐



所有评论(0)