【问题标题】:Client Modules (DTOs) as a Multi-module or Separate Project Repo客户端模块 (DTO) 作为多模块或单独的项目存储库
【发布时间】:2021-11-29 03:49:53
【问题描述】:

我们的项目团队采用客户端模块作为与其他微服务共享 DTO 的一种方式(参考:https://www.vinsguru.com/microservices-architecture-how-to-share-dto-data-transfer-objects/https://www.baeldung.com/java-microservices-share-dto)。 但是,我们想到的一个问题是,是将微服务中的客户端模块 (DTO) 构建为一个多模块项目,还是将其单独放置在不同的项目存储库中。

在这种情况下,我们设想将客户端模块上传到我们的内部 Maven 存储库,而微服务将部署在我们的 Kubernetes 集群中。

因此,想就以下方面征求意见:

  1. 如果您采用客户端模块来共享 DTO 和
  2. ,您将如何构建您的 Spring Boot 项目
  3. 在微服务内的多模块项目中构建客户端模块 (DTO) 或将其单独放置在不同的项目存储库中的优缺点。

如果您有任何问题,请随时发表评论。提前致谢! :)

【问题讨论】:

    标签: spring-boot dto


    【解决方案1】:

    我参与的一些企业项目使用多模块方法来分离客户端和微服务模块。大致思路如下。

    1. 拥有 3 个模块:客户端、集成测试和微服务。
    2. 在客户端模块中,放置您希望与他人共享的所有资源:DTO、异常、Feign 管理器和枚举等。将此模块打包为 Jar
    3. 将所有的服务和数据层逻辑放在微服务模块中。该模块将打包为一个引导 jar,可以部署到您的目标。
    4. 将集成测试放在集成测试模块中。此处的包装是可选的。

    这种方法的优点如下:

    1. 客户端、服务和测试模块之间有明确的关注点分离。
    2. 有一个非常严格的安全性:除非您愿意,否则您不会暴露您的服务逻辑。

    缺点(纯粹是我的看法):

    1. 管理工件很麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 2014-08-03
      • 1970-01-01
      • 2015-12-29
      • 2021-03-23
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多