Крюки отключения весной

Я пытаюсь добавить крючок выключения через Runtime.getRuntime().addShutdownHook() в приложении Spring Gradle.

Я попытался добавить подкласс анонимного потока в класс Application.java из этого учебника. Чтобы это выглядело так:

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
            Thread thread = new Thread() {
                    public void run() {
                            System.out.println("Shutdown Thread!");
                    }
            };
            Runtime.getRuntime().addShutdownHook(thread);
            SpringApplication.run(Application.class, args);
    }
}

Однако я не вижу желаемого поведения: печать «Shutdown Thread!» при выходе из приложения. Что здесь происходит не так?

редактировать: я закрывал его, используя control + c на терминале, где он работает. Я запускаю его на терминале OSX


person efong5    schedule 25.11.2017    source источник
comment
связанные: stackoverflow.com/questions/26678208/spring-boot-shutdown- крючок   -  person    schedule 25.11.2017
comment
Как выйти из приложения?   -  person helospark    schedule 25.11.2017
comment
Я просто управляю c ним в терминале. Я добавлю это. Нужно ли мне более плавное завершение работы для этого?   -  person efong5    schedule 26.11.2017
comment
@ efong5 Ctrl + C должен вызывать перехватчики выключения. Проверил ваш код в Linux, сообщение печатается, поэтому я не могу воспроизвести проблему. Вы абсолютно уверены, что это не напечатано? Возможно, есть какая-то проблема с буферизацией, попробуйте сбросить вывод явно, используя System.out.flush(). Возможно, ваша консоль отправляет сигнал принудительного уничтожения JVM (kill -9) при нажатии ctrl+c, стоит попробовать отключить JVM более изящно, например. SpringApplication.exit или System.exit()   -  person helospark    schedule 26.11.2017
comment
@helospark Спасибо, похоже, проблема была в изящном выходе. Я добавлю информацию о своей среде в свой вопрос, если вы отправите свой комментарий в качестве ответа, я отмечу его как ответ.   -  person efong5    schedule 28.11.2017