【问题标题】:Can we use Springboot with multimodule for microservices我们可以将 Spring Boot 与多模块一起用于微服务吗
【发布时间】:2021-11-02 22:58:24
【问题描述】:

由于 Springboot 多模块生成单个胖 jar,因此将 Spring Boot 多模块项目用于微服务是个好主意

【问题讨论】:

  • 当然可以。

标签: spring-boot microservices multi-module


【解决方案1】:

是的,实际上使用多模块项目是一个非常好的主意。 以下是它的一些优点:

  1. 明确代码和项目模块

  2. 解耦层。

  3. 易于修改/添加模块。假设您的持久性模块已经用 Couchbase 实现,现在您想切换到 Mongo DB,那么您只需要更改持久性模块(依赖项、代码、配置)而不是项目的其他部分。

  4. 易于维护。

【讨论】:

  • 感谢您的回复。但我还有一个疑问,我们是否会为每个模块获得正确的单独罐子。我们不会得到任何正确的胖罐子,因为我们正在包装到 pom 所以没有一个罐子正确我们只会得到单独的模块罐子。
  • 您在每个模块中都获得了 jar,因为它的包装类型是创建模块时的 jar。您需要使用 maven 程序集插件或 shade 插件来创建 fat 和可执行的 jar。您也可以将 spring boot 插件用于可执行 jar。例如src/main/javaorg.springframework.bootspring-boot-maven-pluginrepackage
【解决方案2】:

不,我相信。实际上,在 Spring Boot 中为多模块项目生成单个 fat jar 是不好的设计。假设我们有一个多模块项目,其中包含 3 个用于不同微服务的子模块。那么每个模块都会有自己的pom,对吗?我们需要在主项目的 pom 中将其称为模块。现在,假设无论如何我们能够将主模块 pom 中的包装定义为所有子模块的单个 fat jar。然后,您没有遵循微服务架构指南。这将是一种单体架构,因为您的所有服务都在一个单元(一个罐子)中。虽然它很容易维护,但很难通过 Jenkins 管道进行配置。我的意思是你必须自定义你的 Jenkins 流水线。

您可以参考以下网址了解更多详情:https://thebasictechinfo.com/spring-boot/spring-boot-microservices-architecture-spring-cloud-netflix-oss

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多