我想在Spring-Boot應用程序中爲我的Swing UI組件使用依賴注入,並且很難弄清楚如何在Event Dispatch Thread上正確執行UI行爲。Swing UI彈簧啓動
我想出什麼樣的主意首先是這樣的:
應用
@SpringBootApplication
public class App {
private static AppView view;
@Bean
public AppView appView() {
return view;
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(() -> view = new AppView());
SpringApplication app = new SpringApplication(App.class);
app.run(args);
}
}
APPVIEW
public class AppView extends JFrame {
...
@Inject
private DependencyWithTimeConsumingOperations backendController;
@Inject
private JPanel someChildComponent;
@PostConstruct
public void init() {
constructView(); // inits frame properties and child components
showView();
}
private void showView() {
SwingUtilities.invokeLater(() -> {
pack();
setVisible(true);
});
}
...
}
當某些UI事件發生後端依賴被調用。我觀察到的是,後端調用在EDT上執行而不是主應用程序線程,我認爲這很糟糕。據我所知,Swing沒有太多經驗,只有在UI上執行UI更新。
有沒有更好的方法來連接我的依賴關係,以便一切都在其正確的線程中執行?到目前爲止我能發現的東西似乎有點過時,或者我明白不明白答案:-)
該項目實際上已經睡前不久。但是既然你指出了我的'Denkfehler',我接受你的答案。謝謝。 – nansen