春天和Swing一起

时间:2016-08-10 13:33:18

标签: java spring swing spring-boot

我正在使用Spring和Swing。单击按钮时,将调用以下代码块。

@SpringBootApplication
public class ProcessFile {

    public String startProcess() {
        ConfigurableApplicationContext context = SpringApplication.run(ProcessFile.class);
        ReadFile readFile = context.getBean(ReadFile.class);
        return readFile.getData();
    }

}

但我只是想知道如果我多次点击那么会创建多个Spring上下文还是存在其他一些问题。我的UI只有一个JPanel来选择一个文件并调用这个执行许多任务的startProcess方法。或者,当下面的代码块执行完成时,是否会销毁SpringContext?

1 个答案:

答案 0 :(得分:0)

我认为你的健康应该只在应用程序中有一个spring应用程序上下文:)

为此,您可以实现CommandLineRunner并显示Swing应用程序:

@Component
public class Runner implements CommandLineRunner {

    /**
     * the JFrame to be displayed.
     */
    @Autowired
    private DemoFrame frame;

    @Override
    public void run(String... args) throws Exception {
        /* display the form using the AWT EventQueue */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                frame.setVisible(true);
            }
       });
    }

}



@Component
public class DemoFrame extends JFrame{
    // other code here....

    @Autowired
    ReadFile readFile;

    public String startProcess() {
        return readFile.getData();
    }

    // other code here....
}