【问题标题】:How do I terminate a Spring application during startup?如何在启动期间终止 Spring 应用程序?
【发布时间】:2015-10-14 21:38:30
【问题描述】:

我有一个 Spring Boot 应用程序,它有一些外部依赖项(例如,项目外部的文件需要存在才能使应用程序正常启动)。

我的一个 bean 有一个 @PostConstruct 方法来进行初始化。如果初始化不成功-例如找不到文件,我想干净而优雅地退出。

@PostConstruct方法中调用((ConfigurableApplicationContext)applicationContext).close();会导致

java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context

以及一系列其他异常。有没有办法正确地做到这一点?

【问题讨论】:

  • 只要抛出一个异常...
  • 我只是打电话给System.exit(0)。但我想要一个更好的解决方案。
  • System.exit(0) 是终止的“唯一”解决方案......

标签: spring spring-boot


【解决方案1】:

您可以使用系统退出静态方法,它终止当前运行的Java虚拟机。 传递的代码指示终止状态。按照惯例,非零状态码表示异常终止。

exp:

System.exit(0);

【讨论】:

    【解决方案2】:

    你不能在@PostConstruct中使用System.exit(0),关机会等待锁定startupShutdownMonitor,无法退出。

    【讨论】:

    • 呃,嘘......我半年前喜欢这个评论,但我忘记了这个重要的事情。现在我打开这个页面,看到我自己的喜欢,很好。再次感谢。
    猜你喜欢
    • 2017-03-05
    • 2019-04-11
    • 2012-09-15
    • 2021-01-15
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多