我可以以某种方式运行与一个SpringBootApplication共享同一库模块的多个Web模块吗?

时间:2019-04-26 07:31:04

标签: java spring maven spring-boot

我正在启动一个Spring项目,该项目应该由四个主要模块组成:

  1. 核心模块-具有服务和存储库层(应该代表其他模块的公共库)
  2. 管理模块-应包含其自己的安全配置和端点(控制器)
  3. 客户模块-应包含另一个安全配置和控制器
  4. Web模块-包含应启动Admin和Customer模块的SpringBootApplication。

这是否可行,还是应该将项目分为具有公共库的两个Spring Boot项目? 我可以配置一个将Admin和Customer模块构建为.war文件并在Web模块中与SpringBootApplication一起运行的构建吗?

客户和管理模块不必位于同一端口上。唯一重要的是要同时运行它。

下面是我当前项目的结构。

/project-root
   -pom.xml (pom packaging defined; modules: core, web-admin, web-customer)
   /core 
     -src (contains service and repository classes)
     -pom.xml (jar packaging)
   /web-admin
     -src (contains controllers and security configuration for admin portal)
     -pom.xml (jar packaging for now; dependency on core)
   /web-customer
     -src (contains controllers and security configuration for customers)
     -pom.xml (jar for now; dependency on core)
   /web
     -src (should contain SpringBootApplication to run all the modules)

1 个答案:

答案 0 :(得分:1)

当然可以。您只需要注意以下几点:

  1. 您的网络模块应包括所有其他模块作为依赖项;
  2. SpringBootApplication类应该位于顶级包中,否则您将不得不使用baseScanPackages属性;

例如:

   /core 
     com.example.app.core      <--- All the core classes would be on this package
   /web-admin
     com.example.app.admin     <--- All the admin classes would be on this package
   /web-customer
     com.example.app.customer  <--- All the customer classes would be on this package
   /web
     com.example.app           <--- The SpringBootApplication class should be at this level

  

我是否可以配置将Admin和Customer模块构建为.war文件的构建,并使用SpringBootApplication在Web模块中运行它?

您不需要将管理和客户模块打包为war文件,jar打包是完美的。

  

客户和管理模块不必位于同一端口上。

这是硬性要求吗?如果是,那么最好编写两个不同的应用程序。否则,可以在同一端口上访问所有API。