Я создаю java-приложение командной строки, используя Spring Boot, чтобы заставить его работать быстро.
Приложение загружает файлы разных типов (например, CSV) и загружает их в базу данных Cassandra. Он НЕ использует веб-компоненты, это не веб-приложение.
Проблема, с которой я столкнулась, заключается в том, чтобы остановить приложение, когда работа выполнена. Я использую интерфейс Spring CommandLineRunner с @Component
для запуска задач, как показано ниже, но когда работа завершена, приложение не останавливается, оно по какой-то причине работает, и я не могу найти способ остановите его.
@Component
public class OneTimeRunner implements CommandLineRunner {
@Autowired
private CassandraOperations cassandra;
@Autowired
private ConfigurableApplicationContext context;
@Override
public void run(String... args) throws Exception {
// do some work here and then quit
context.close();
}
}
UPDATE: проблема кажется spring-cassandra
, поскольку в проекте ничего нет. Кто-нибудь знает, почему он поддерживает потоки, запущенные в фоновом режиме, которые препятствуют тому, чтобы приложение остановилось?
UPDATE: проблема исчезла, обновив последнюю версию Spring.