我可以对使用Java Swing开发的桌面应用程序使用Spring Boot吗?可以吗?还是不建议这样做?我可以在Swing应用程序中获得Spring Boot的优势还是会降低性能?
答案 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
以便能够修改应用程序的运行时行为:这一次启动用户界面。SpringApplicationBuilder
完成,以便能够禁用 headless 功能,该功能旨在在基于服务器的服务器中使用应用程序。关于性能, Spring Boot 桌面应用程序仍然是部署 JVM 的应用程序,因此不会产生性能开销(除了极简启动之外)。根据您的应用程序,但您自己介绍的应用程序除外。
答案 1 :(得分:1)
正如已经提到的,SpringBoot主要致力于开发Web应用程序。为了获得Spring应用程序的好处,您可能需要使用其他一些工具:
对于依赖项注入,您可以使用Guice,它可能更轻巧,因为您将不会添加具有不必要的Web依赖项的应用程序。
对于数据库使用,您仍然可以将休眠配置为ORM工具,但是您将不得不手动配置更多内容。
这似乎需要更多工作,但作为回报,您将拥有更轻量级的应用程序,并且仅需要依赖于此即可。