桌面应用程序的Spring启动

Pra*_*ath 2 java swing desktop-application spring-boot

我可以将Spring启动用于使用Java Swing开发的桌面应用程序吗?这样很好还是不可取的?我可以在Swing应用程序中获得Spring启动优势,还是会降低性能?

tma*_*wen 10

正如官方Spring Boot文档所述:

Spring Boot可以轻松创建独立的,生产级的基于Spring的应用程序,您可以"运行".

没有任何说明Spring Boot仅用于Web应用程序开发,因为它提供了许多围绕Spring Framework本身的功能,并且与Web应用程序无关,例如核心容器,Spring AOP,Spring JPA ......

这是一个示例实现,其中Spring Boot注释应用程序运行一个简单的Swing框架:

@SpringBootApplication
public class SpringDesktopSampleApplication implements CommandLineRunner {

    public static void main(String[] args) {
        new SpringApplicationBuilder(SpringDesktopSampleApplication.class).headless(false).run(args);
    }

    @Override
    public void run(String... args) {
        JFrame frame = new JFrame("Spring Boot Swing App");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        JPanel panel = new JPanel(new BorderLayout());
        JTextField text = new JTextField("Spring Boot can be used with Swing apps");
        panel.add(text, BorderLayout.CENTER);
        frame.setContentPane(panel);
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能会注意到Spring Boot应用程序运行的经典方式有两点不同:

  • 主应用程序类的实现CommandLineRunner是为了能够修改应用程序的运行时行为:这次启动用户界面.
  • Spring Boot应用程序的初始化是SpringApplicationBuilder为了能够禁用无头功能,该功能适用于基于服务器的应用程序.

在性能方面,Spring Boot桌面应用程序仍然是JVM部署的应用程序,除了您自己介绍的应用程序之外,您的应用程序将不会产生性能开销(除了简单的启动程序).