我有以下抽象类,具有 init()
和 stop()
方法: (stop()
方法中的问题)
public abstract class AbstractJavaFxApplication extends Application {
private static String[] fxArgs;
protected ConfigurableApplicationContext applicationContext;
@Override
public void init() throws Exception {
applicationContext = SpringApplication.run(getClass(), fxArgs);
applicationContext.getAutowireCapableBeanFactory().autowireBean(this);
}
@Override
public void stop() throws Exception {
System.out.println("STOP");
applicationContext.stop();
super.stop();
}
protected static void launchApp(Class<? extends AbstractJavaFxApplication> clazz, String[] args){
fxArgs = args;
Application.launch(clazz, args);
}
}
主类,它扩展了AbstractJavaFxApplication
:
@SpringBootApplication
public class WeightliftingviewerApplication extends AbstractJavaFxApplication{
@Value("First attempt")
private String tittle;
@Qualifier("mainView")
@Autowired
private ControllersConfiguration.ViewHolder view;
public static void main(String[] args) {
launchApp(WeightliftingviewerApplication.class, args);
// SpringApplication.run(WeightliftingviewerApplication.class, args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle(tittle);
primaryStage.setScene(new Scene(view.getView()));
primaryStage.setResizable(true);
primaryStage.centerOnScreen();
primaryStage.show();
}
}
问题在于,当我关闭应用程序时,我预计会命中 stop()
方法并在控制台中获取 STOP
。但应用程序尚未停止,仍在运行
请您参考如下方法:
在您的停止方法中尝试一下:
@Override
public void stop() throws Exception {
System.out.println("STOP");
Platform.exit();
System.exit(0);
}