Java应用程序的组件

时间:2015-08-11 09:09:25

标签: java architecture spring-boot derby h2

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

主要要求:

  1. 此应用程序必须具有内部数据存储(RDBMS)和数据 必须耐用。
  2. 用于RESTful Web服务的HTTP服务器(用于传入 来自外部世界的电话)
  3. 简易安装过程
  4. 现在我正在考虑在Spring Boot上实现这个应用程序。它将允许我们在嵌入式Tomcat上简单地运行应用程序,而无需安装独立的Tomcat服务器。

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

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

    您如何看待我的选择?它可以使用这些工具吗?感谢

1 个答案:

答案 0 :(得分:1)

你的选择似乎很好。

我实际上已经实现了这些组件的应用程序。作为数据库我选择H2因为它有 与Derby相比,我需要features,特别是对创建域名的支持非常重要。通常H2似乎比Derby具有更多功能。

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

使用@RestController可以轻松实现RESTful API。

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

作为一个优点,运行这样的本地Java应用程序,您可以访问本地文件系统(例如,直接在“我的文档”中存储PDF报告。

修改

您可以在应用程序准备就绪时自动启动浏览器,从上次初始化的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);
        }
    }
}