Spring Boot项目中的多个Web应用程序

4
使用Spring 4和Maven,我通常创建分层应用程序,其中子项目编译成JAR包,而根项目编译成WAR包。例如:
  Web Layer
      |
Service Layer
      |
  Dao Layer

(Shared Common Project)

使用这种架构,我还可以创建两个Web应用程序,它们有一个共同的parent pom并共享相同的子项目。
  Web Layer      Admin Web Layer
         \        /
             |
        Service Layer
             |
          Dao Layer

(Shared Common Project)

有没有可能在Spring Boot中实现同样的效果?我不想将这两个网络项目合并。它们具有完全不同的目的。它们有不同的登录机制,不同的用户和不同的角色等。
澄清一下,如果我用Spring 4和Maven构建此应用程序,则Web应用程序将编译为2个war文件。然后它们可以在同一端口上的单个服务器上运行。我正在尝试使用Spring Boot匹配此配置,但由于Spring Boot嵌入了Tomcat,我不确定如何在同一实例上运行这两个应用程序。

这样做有什么意义? - Marged
它们是两个不同的Web应用程序,共享许多相同的服务,但在视图和安全方面没有任何相似之处。 - mad_fox
1
Spring Boot 没有阻止您执行所描述的操作。听起来您需要两个独立的 Spring Boot 应用程序,它们依赖于共同的子项目。 - Andy Wilkinson
是的,这就是我正在努力想要解决的问题。我找不到任何相关的例子。而且,我也不确定如何同时运行这两个应用程序。 - mad_fox
或者创建3个Spring Boot应用程序。一个将您的服务公开为REST端点,您可以在其上构建Web和管理应用程序的另外两个应用程序。 - M. Deinum
你找到解决方法了吗?我也遇到了同样的问题。 - toskebre
1个回答

0
步骤:
  1. 为服务层创建一个单独的项目模块。

  2. 为DAO层创建一个单独的项目模块。

  3. 为Web层创建一个SPRING BOOT APP,Web层依赖于服务层和DAO层。

  4. 为管理员Web层创建一个SPRING BOOT APP,管理员Web层依赖于服务层和DAO层。

使用此设计,您将能够分别运行Web层和Admin Web层,但同时使用公共的服务和DAO层。


我怎样才能同时运行它们?如果我在web模块上运行mvn spring-boot:run命令,然后再尝试在admin模块上运行它,那么端口已被占用,我不会得到一个错误吗? - mad_fox
如果您有两个不同的Spring Boot应用程序,并且具有application.properties或application.yml文件,请在其中定义此属性server.port = 8010或您喜欢的任何端口(尚未使用)。 - Hbargujar
1
在我提供的示例中,Web应用程序将使用Spring 4和Maven编译为2个war文件。然后它们可以在同一端口上运行在服务器上。我正在尝试匹配这个配置。这就是我试图弄清楚如何做到这一点,但由于spring-boot已经嵌入了Tomcat,我不确定这两个应用程序如何在同一实例上运行。 - mad_fox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接