【发布时间】:2019-03-22 05:30:19
【问题描述】:
我可以将 Spring Boot 用于使用 Java Swing 开发的桌面应用程序吗?这很好还是不可取?我可以在 Swing 应用程序中获得 Spring Boot 优势还是会降低性能?
【问题讨论】:
标签: java swing spring-boot desktop-application
我可以将 Spring Boot 用于使用 Java Swing 开发的桌面应用程序吗?这很好还是不可取?我可以在 Swing 应用程序中获得 Spring Boot 优势还是会降低性能?
【问题讨论】:
标签: java swing spring-boot desktop-application
如官方Spring Boot documentation所说:
Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序,您可以“直接运行”。
没有任何说明 Spring Boot 仅用于 Web 应用程序开发,因为它围绕 Spring 框架 本身提供了许多功能,并且与 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,以便能够修改应用程序的运行时行为:这次启动用户界面。SpringApplicationBuilder 完成的,以便能够禁用 headless 功能,该功能旨在用于基于服务器的应用程序中。 在性能方面,Spring Boot 桌面应用程序仍然是一个 JVM 部署的应用程序,不会产生任何性能开销(除了极简的启动开销)由您的应用程序提供,您自己介绍的除外。
【讨论】:
如前所述,SpringBoot 主要专注于开发 Web 应用程序。要获得 Spring 应用程序的好处,您可能需要使用其他一些工具:
对于依赖注入,您可以使用Guice,这可能是更轻量级的替代方案,因为您不会添加具有不必要的网络依赖的应用程序。
对于数据库使用,您仍然可以将 hibernate 配置为 ORM 工具,但是您必须手动配置更多内容。
这似乎需要更多的工作,但作为回报,您将拥有更轻量级的应用程序,并且只需要依赖项即可。
【讨论】: