我正在开发一个应用程序,它基本上是一个将使用命令行运行的服务。我确实在config文件中有一个选项可以显示GUI. 如果用户选择让它显示窗口,那么我可以shutdown()使用WindowClosing来自 Swing的事件或关闭按钮调用我的方法。但是,如果用户选择 no-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注释,但它没有按预期运行该方法。
任何帮助,将不胜感激。
慕村9548890
慕姐4208626
相关分类