Весенний замес - нить прервать, когда работа останавливается


При остановке работы руководство говорит

Завершение работы не является немедленным, так как нет способа принудительного немедленного завершения работы, особенно если выполнение в данный момент находится в коде разработчика, над которым платформа не имеет контроля, например в бизнес-службе.

Мои длительные шаги выполняют проверки для Thread.currentThread().isInterrupted() и бросают InterruptedException. Наверняка есть какой-то способ прервать поток, выполняющий задание?

(Примечание: я использую SimpleAsyncTaskExecutor с TaskletStep)

1 2

1 ответ:

Создайте боб для реализации

ApplicationListener<ContextClosedEvent> onApplicationEvent()

Тогда вы можете закрыть задачу.

@Component
 class ContextClosedHandler implements ApplicationListener<ContextClosedEvent> {
@Autowired SimpleAsyncTaskExecutor executor;

  void onApplicationEvent(ContextClosedEvent event) {
     executor.shutdown();
  }       
}

Этот пост о жизненном цикле бобов также может помочь

Http://technicalmumbojumbo.wordpress.com/2011/04/13/spring-framework-an-introduction-part-ii-object-lifecycle-autowiring-internationalizationi18n/