Приложение Spring boot : когда мне нужно закрыть контекст?

#java #spring #spring-boot #spring-context

Вопрос:

Должен ли я всегда закрывать контекст spring вручную ?

Есть ли какие-либо отличия (в отношении закрытия контекста) от написания :

 public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}
 

и

 public static void main(String[] args) {
    new SpringApplicationBuilder(Application.class)
        .run(args);
}
 

?

Комментарии:

1. Нет, его нет, и вам не нужно его закрывать.

2. Я намеренно сохранил общий вопрос. В моем случае у меня есть приложение для пакетной обработки. Когда я удаляю ctx.close() приложение, оно никогда не заканчивается (даже если пакет успешно завершен). Поэтому я хочу знать, в каких случаях я должен закрыть контекст spring

3. Тебе не следует этого делать. Если это пакет и он продолжает работать, у вас есть зависимость, которая поддерживает это (например, веб-зависимость, запускающая tomcat, или планировщик, или…).

4. Да, на самом деле, я использую а TaskExecutor . Как сказать ему, чтобы он выключился после завершения пакета ?

5. Это должно произойти, если больше нечего обрабатывать. Разве нет чего-то еще запланированного или блокирующего поток?