Я занимаюсь разработкой приложения, которое в основном представляет собой службу, которая будет запускаться из командной строки.У меня есть опция в файле config
для отображения GUI
.Если пользователь выбирает, чтобы оно отображало окно, тогда я могу вызвать мой метод shutdown()
, используя событие WindowClosing
из Swing или кнопку выключения.Однако, если пользователь выбирает опцию без GUI, я не уверен, как обеспечить вызов этого метода при нажатии Control-C в командной строке.Мой метод shutdown()
обновляет некоторые важные данные в базе данных и останавливает потоки, поэтому мне нужно, чтобы они запускались.Я провел некоторое исследование и попробовал что-то вроде этого:
public static void main(String args[])
{
//Look and Feel Initialization
try
{
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName()))
{
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException ex)
{
logger.error("Error initializing look and feel : " + ex.getMessage());
}
//Application Initialization
SpringApplication application = new SpringApplication(MDHIS_Service.class);
application.addListeners((ApplicationListener<ContextClosedEvent>) (ContextClosedEvent e) ->
{
shutdown();
});
application.run(args);
}
Проблема в том, что мой метод shutdown()
далек от статического.Я не знаю, как подключить это к контексту Spring Boot, чтобы он запускал этот метод перед остановкой.Я попробовал аннотацию @PreDestroy
, но метод не работает должным образом.
Любая помощь будет принята.
Спасибо!