Java 应用程序的组件

Components for Java application

我需要实现某种必须安装在客户端计算机上的 Java 应用程序。

主要要求:

  1. 这个应用程序必须有内部数据存储(RDBMS)和数据 必须耐用。
  2. RESTful Web 服务的 HTTP 服务器(用于传入 来自外部世界的电话)
  3. 安装过程简单

现在我正在考虑在 Spring Boot 上实现这个应用程序。它将使我们能够在嵌入式 Tomcat 上简化 运行 应用程序,而无需安装独立的 Tomcat 服务器。

此外,对于内部数据存储 (RDBMS),我计划使用嵌入式 H2 或 Derby 数据库。主要标准 - 数据必须在应用程序重新启动之间保持持久。

对于 RESTful Web 服务,我计划在 Spring MVC 上使用 Spring RestController。

你觉得我的选择怎么样?它可以与这些工具一起使用吗?谢谢

我觉得你的选择不错。

我实际上已经用这些组件实现了一个应用程序。作为数据库,我选择了 H2,因为它有 features 与 Derby 相比我需要它,尤其是对创建域的支持很重要。总的来说H2似乎比Derby有更多的特性。

至于数据持久性,我只能说到目前为止我没有遇到任何问题。

A RESTful API 可以很容易地用 @RestController 实现。

您可以 运行 使用用户凭据登录后 Spring 启动应用程序,并将 H2 数据库文件保存在用户个人文件夹中的某个位置。

另外,运行像这样安装本地 Java 应用程序,您可以访问本地文件系统(例如,将 PDF 报告直接存储在 "My Documents".

编辑:

您可以在应用准备就绪时自动启动浏览器,从上次初始化的 bean 开始:

@Value("${server.port}")
private String          serverPort;

@Value("${server.context-path}")
private String          serverContextPath;

public void openAppInBrowser() {
    final Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
        logger.debug("Open Browser.");
        try {
            desktop.browse(new URI("http://localhost" +
                    (StringUtils.isNotEmpty(serverPort) ? ":" + serverPort : "") +
                    (StringUtils.isNotEmpty(serverContextPath) ? serverContextPath : "")));
        } catch (final Exception e) {
            logger.debug("Error opening Browser", e);
        }
    }
}