记一次springboot的开机启动自动关闭问题
具体问题特征:
启动后,就是出现Started Application in 36.914 seconds后,开始关闭定时任务、nacos服务注册等内容,中间没有任何异常信息,最后出现"进程已结束,退出代码为 1"或者是“Process finished with exit code 1”
查到很多可能的情况:Spring Boot 应用自动退出剖析-阿里云开发者社区
但是经过排查,都不是这些问题。
最后发现是:ApplicationRunner的实现类的run方法上throw Exception,执行一旦异常就向springboot抛出异常,抛出之前没有输出错误信息,导致了springboot直接启动服务关闭。
核心问题点在于:不应该在run方法上throw Exception,应该加try catch捕获异常,这样就不影响springboot的运行,还能抛出准确的异常信息。
具体为什么抛出异常springboot就启动关闭,没细究源码,以后再说。
这个问题最恶心的问题点在于,跟踪日志根本跟踪不到异常内容,只能靠排查,一开始考虑过启动相应类的问题,但是没发现这个异常。最后发现在run方法上throw Exception,才猛然反应过来是这个问题导致的。
乱在方法上抛异常是真的坑!