Spring Boot 启动异常排查:无声失败的定位方法

最近遇到一个棘手的问题:Spring Boot 应用在 context 初始化阶段静默失败,没有错误堆栈,应用以 exit code 1 退出。

现象

应用启动到 Located property source 后就没了下文。没有异常堆栈,没有错误日志,进程直接退出。

排查过程

  1. 开启 DEBUG 日志:在 application.yml 中设置 logging.level.root=DEBUG,发现 Nacos 配置加载阶段有连接超时的痕迹
  2. 检查 Nacos 连接:确认 Nacos 服务器 (10.10.1.157:8848) 可达,但配置的 namespace 不存在
  3. 验证 MyBatis 映射:部分 Mapper XML 引用了不存在的表结构

根因

最终定位到两个问题叠加:Nacos 配置加载失败 + MyBatis 映射错误。Spring Boot 在某些情况下会”吞掉”异常,尤其是 Bean 创建阶段的 BeanCreationExceptionSpringApplication#handleFailure 处理时。

解决方案

在启动命令中添加 --debug 标志,或设置环境变量 SPRING_BOOT_DEBUG=true,可以获得更详细的失败信息。