在另一个 java 应用程序中启动 spring 启动应用程序?

Start a spring boot application inside another java application?

我有两个 java 申请:

目前,我在不同的进程中启动这两个应用程序。

如何从客户端启动服务器以获得“独立”应用程序?使用 ProcessBuilder 调用 java.exe 是一种解决方案,但它有缺点:它将 OS 依赖并且不能保证服务器进程将在客户端离开时关闭/终止。

从体系结构的角度来看,将它们分开是最好的选择,因为您将服务器和客户端分开,这将是生产环境中的行为。

如果您只在开发阶段需要它,而您将两者 运行 放在一起是为了节省时间,您可以使用 Docker 在容器中构建它们。基本上创建两个应用程序,从两个不同的文件夹构建,然后您将同时启动它们。

我在 https://www.toptal.com/spring-boot/spring-boot-application-programmatic-launch 中找到了解决方案。伊戈尔·德拉克

  • 打开包含服务器的 jar 文件以查找 class ...loader.archive.JarFileArchive(和其他一些)
  • 实例化它并使用它在 jar 本身上启动应用程序。

jar 文件既未提取也未修改。只读了几个 classes。