Вы пробовали иметь свой @Scheduled
боб реализовать DisposableBean
(так что он может быть информированным, когда контекст Spring завершает работу) и явно закрывая контекст ваш метод main()
?
Понятно, что я не вижу, как код может работать так, как вы ожидаете. Spring нужно запускать новые потоки для запуска вашей задачи @Scheduled
в момент времени/скорости, которую вы настраиваете, а это значит, что когда код в вашем методе main()
завершается, в JVM все еще запущены потоки без демона. Если вы не сообщите Spring, чтобы закрыть эти потоки, тогда как они будут прекращены?
Редактировать: чтобы быть ясным, я думаю, что решение состоит в том, чтобы явно позвонить close()
на ваш ApplicationContext
. В противном случае Spring не может сказать, что служба-исполнитель запускает запланированные задачи, чтобы закрыть себя. Ключ отключения JVM не будет вызываться, когда main()
завершает работу, так как потоки не-daemon все еще запущены.
спасибо. это также решение, предложенное в оригинальном билете. – Marcel