桌面应用程序的Spring Boot

时间:2018-10-17 13:48:57

标签: java swing spring-boot desktop-application

我可以对使用Java Swing开发的桌面应用程序使用Spring Boot吗?可以吗?还是不建议这样做?我可以在Swing应用程序中获得Spring Boot的优势还是会降低性能?

2 个答案:

答案 0 :(得分:5)

根据官方Spring Boot documentation所述:

  

使用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);
    }
}

您可能会注意到运行 Spring Boot 应用程序的经典方式之间的两个区别:

  • 主应用程序类实现CommandLineRunner以便能够修改应用程序的运行时行为:这一次启动用户界面。
  • Spring Boot 应用程序的初始化通过SpringApplicationBuilder完成,以便能够禁用 headless 功能,该功能旨在在基于服务器的服务器中使用应用程序。

关于性能, Spring Boot 桌面应用程序仍然是部署 JVM 的应用程序,因此不会产生性能开销(除了极简启动之外)。根据您的应用程序,但您自己介绍的应用程序除外。

答案 1 :(得分:1)

正如已经提到的,SpringBoot主要致力于开发Web应用程序。为了获得Spring应用程序的好处,您可能需要使用其他一些工具:

对于依赖项注入,您可以使用Guice,它可能更轻巧,因为您将不会添加具有不必要的Web依赖项的应用程序。

对于数据库使用,您仍然可以将休眠配置为ORM工具,但是您将不得不手动配置更多内容。

这似乎需要更多工作,但作为回报,您将拥有更轻量级的应用程序,并且仅需要依赖于此即可。