如果启动过程中发生错误,我想尝试重新运行我的应用程序。
这是我的方法:
while(true) {
try {
SpringApplication.run(StatisticsApplication.class, args);
} catch (Exception e) {
SpringApplication.run(StatisticsApplication.class, args);
throw new RuntimeException("Could not execute getConnection().", e);
}
}
可悲的是,它无法正常工作。如果应用启动失败,它将再次重新启动一次,然后退出。
答案 0 :(得分:4)
我强烈建议您不要使用当前风险很大的方法。
我建议您改用 Spring Retry
:documentation
该项目为Spring提供了声明式重试支持 应用程序。在Spring Batch,Spring Integration,Spring中使用 用于Apache Hadoop(以及其他)。
快速入门
示例:
@Configuration @EnableRetry public class Application { @Bean public Service service() { return new Service(); } } @Service class Service { @Retryable(RemoteAccessException.class) public void service() { // ... do something } @Recover public void recover(RemoteAccessException e) { // ... panic } }
这是有关如何使用Spring Retry的另一指南: