To display the condition evaluation report re-run your application with 'debug'

203 阅读2分钟

⚙️ Spring Boot 启动失败:Error starting ApplicationContext — 一次 MyBatis-Plus 与 Spring Boot 版本不兼容的血泪排查

💡 本文记录一次真实的 Spring Boot 项目启动失败排查过程,
原因竟是 MyBatis-Plus 与 Spring Boot 版本不兼容
适合所有在启动时遇到

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-10-12 20:21:23.873 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed


🧠 一、问题背景

项目环境如下:

组件版本
JDK17
Spring Boot3.1.7
MyBatis-Plus3.5.5
Maven3.8.5
IDEA2024.4

项目结构正常、Mapper 扫描正常,命令行构建和运行都没问题:

mvn clean package -DskipTests java -jar target/backend-0.0.1-SNAPSHOT.jar

✅ 服务启动成功。

但用 IDEA Run 启动时,却频繁报错:


❌ 二、报错现象

控制台输出如下:

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-10-13 08:27:07.096 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed

或者:

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'ddlApplicationRunner' is expected to be of type 'org.springframework.boot.Runner' but was actually of type 'org.springframework.boot.SpringApplication'

一开始以为是:

  • Mapper 没扫描到
  • 数据库没连上
  • Bean 类型冲突
    但这些排查后都没问题。

🔎 三、真正原因:MyBatis-Plus 与 Spring Boot 的版本不兼容!

查看项目依赖树后发现:

mvn dependency:tree | grep mybatis

输出:

com.baomidou:mybatis-plus-boot-starter:3.5.5 └── org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2

也就是说:

MyBatis-Plus 3.5.5 内部传递引入了 MyBatis-Spring-Boot-Starter 3.0.2
而这个版本与 Spring Boot 3.1.x 存在兼容性问题

具体表现为:

  • ApplicationContext 启动失败;
  • BeanNotOfRequiredTypeException;
  • ddlApplicationRunner 类型识别错误;
  • IDEA Run 启动失败但打包 jar 启动正常。

📚 四、官方说明

来自 MyBatis-Plus 官方 issue:

🪲 baomidou/mybatis-plus#5982
在 Spring Boot 3.1.x + MyBatis-Plus 3.5.5 环境下,应用可能无法正常启动,
已在 3.5.6 版本中修复。


🧩 五、解决方案(推荐且最稳)

在你的 pom.xml 中,将 MyBatis-Plus 升级为 3.5.6 或更高版本:

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.6</version> <!-- ✅ 或使用 3.5.8 最新版 --> </dependency>

然后执行:

mvn clean package -DskipTests

重新运行:

java -jar target/backend-0.0.1-SNAPSHOT.jar

✅ 一切恢复正常!


🧹 六、防止缓存依赖干扰(可选)

为避免本地 .m2 缓存的旧版本干扰,建议彻底清理:

mvn clean dependency:purge-local-repository -DreResolve=false mvn install -DskipTests


💡 七、经验总结

问题现象根本原因解决方案
IDEA 启动时报 ApplicationContext failedMyBatis-Plus 3.5.5 传递依赖旧版 mybatis-spring-boot-starter升级到 3.5.6+
Bean 类型冲突 (ddlApplicationRunner)Starter 内部 Bean 定义不兼容升级依赖版本
命令行能跑,IDEA 不行IDEA 编译时触发旧 Bean 加载逻辑统一版本并清理缓存

🧱 八、参考环境(可直接使用)

<properties> <java.version>17</java.version> <spring-boot.version>3.1.7</spring-boot.version> <mybatis-plus.version>3.5.6</mybatis-plus.version> </properties>


🎯 九、一句话总结

你的配置是对的、Mapper 也扫描了、数据库也没问题。
真正的罪魁祸首是 MyBatis-Plus 3.5.5 与 Spring Boot 3.1.x 的兼容性 Bug
升级 MyBatis-Plus 至 3.5.6 或更高版本即可彻底解决。