最近遇到一个棘手的问题:Spring Boot 应用在 context 初始化阶段静默失败,没有错误堆栈,应用以 exit code 1 退出。
现象
应用启动到 Located property source 后就没了下文。没有异常堆栈,没有错误日志,进程直接退出。
排查过程
- 开启 DEBUG 日志:在 application.yml 中设置
logging.level.root=DEBUG,发现 Nacos 配置加载阶段有连接超时的痕迹 - 检查 Nacos 连接:确认 Nacos 服务器 (10.10.1.157:8848) 可达,但配置的 namespace 不存在
- 验证 MyBatis 映射:部分 Mapper XML 引用了不存在的表结构
根因
最终定位到两个问题叠加:Nacos 配置加载失败 + MyBatis 映射错误。Spring Boot 在某些情况下会”吞掉”异常,尤其是 Bean 创建阶段的 BeanCreationException 被 SpringApplication#handleFailure 处理时。
解决方案
在启动命令中添加 --debug 标志,或设置环境变量 SPRING_BOOT_DEBUG=true,可以获得更详细的失败信息。