Я создаю java-приложение командной строки, используя Spring Boot, чтобы заставить его работать быстро.Как закрыть приложение командной строки 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
, так как нет ничего в проекте. Кто-нибудь знает, почему он поддерживает потоки, запущенные в фоновом режиме, которые предотвращают остановку приложения?
ОБНОВЛЕНИЕ: проблема исчезла путем обновления до последней версии весенней загрузки.
Любое решение этого вопроса? Это случается с обычным весенним ботинком (без кассандры) – ACV
@ACV nope, я просто живу с ним. Я узнал, что некоторые весенние модули порождают собственные потоки, например. В Cassandra есть пул потоков для соединений или RabbitMQ при использовании контейнеров-слушателей. Это займет некоторое время, чтобы завершить работу после вызова 'context.close()', чтобы остановить приложение. – ESala
См. Мой ответ ниже – ACV