Spring Boot:在“应用程序运行失败”时退出jvm

3

有没有一种方法能够在“应用程序运行失败”的情况下做出反应,例如当数据库不可用时?

在我的情况下,期望的行为是退出JVM进程,这样Docker容器就会自动重新启动。

我尝试监听“ContextClosedEvent”,但它对于启动失败的情况不起作用。


https://dev59.com/0mAg5IYBdhLWcg3w_fLV#22944850 - ozkanpakdil
@özkanpakdil 你看到我的问题的答案了吗?关于“应用程序失败”错误的反应没有任何信息。 - silent-box
当数据库不可用时,Spring Boot 仍会失败。 对于其他情况,我认为您可以检查如何结束正在运行的 Spring Boot。 - ozkanpakdil
@özkanpakdil Spring Boot 失败,JVM 仍在运行。 该问题已通过 Spring Boot 的内部机制解决。 - silent-box
你是如何解决它的? - Michael
1个回答

2

对于任何需要在启动过程中出现故障时终止应用程序的人(例如在Kotlin中):

@SpringBootApplication
class MyApplication

fun main(args: Array<String>) {
    val application = SpringApplication()
    application.addListeners(FailedInitializationMonitor())
    application.addPrimarySources(listOf(MyApplication::class.java))
    application.run(*args)
}

class FailedInitializationMonitor : ApplicationListener<ApplicationFailedEvent> {

    override fun onApplicationEvent(event: ApplicationFailedEvent) {
        exitProcess(1)
    }
    
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接