【问题标题】:Spring boot for desktop application [closed]桌面应用程序的 Spring Boot [关闭]
【发布时间】:2019-03-22 05:30:19
【问题描述】:

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

【问题讨论】:

    标签: java swing spring-boot desktop-application


    【解决方案1】:

    如官方Spring Boot documentation所说:

    Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序,您可以“直接运行”。

    没有任何说明 Spring Boot 仅用于 Web 应用程序开发,因为它围绕 Spring 框架 本身提供了许多功能,并且与 Web 应用程序无关,例如作为核心容器,Spring AOPSpring 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 部署的应用程序,不会产生任何性能开销(除了极简的启动开销)由您的应用程序提供,您自己介绍的除外。

    【讨论】:

      【解决方案2】:

      如前所述,SpringBoot 主要专注于开发 Web 应用程序。要获得 Spring 应用程序的好处,您可能需要使用其他一些工具:

      对于依赖注入,您可以使用Guice,这可能是更轻量级的替代方案,因为您不会添加具有不必要的网络依赖的应用程序。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-15
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        • 2011-07-03
        • 2011-08-04
        • 2011-10-19
        相关资源
        最近更新 更多