如何在异常后正确执行Spring Boot中的代码并让程序退出?

时间:2016-08-03 20:38:29

标签: java spring asynchronous spring-boot

在考虑如何在Spring Boot中运行无限任务(参见我之前的question)之后,我决定这样做:

@Component
@EnableAsync
public class MyRunner implements CommandLineRunner {

    @Autowired
    private ScheduledExecutorService scheduledExecutorService;

    @Async
    @Override
    public void run(String... args) throws Exception {
        try {
            infiniteLoop();
        } finally {
            this.scheduledExecutorService.shutdown();
        }
    }
}

这允许SpringApplication#run方法完全完成。

作为整个事情的一部分,我已经宣布了一个ScheduledExecutorService bean。我的问题是,如果infiniteLoop()引发意外的异常,Executor将阻止应用程序在外部管理时分流。

有没有更好的方法来处理这种情况?或者这是finally块的好用吗?

0 个答案:

没有答案