想知道 DTO 类在多模块 Maven 项目中属于哪里

问题描述 投票:0回答:1

我有带有以下模块的 Maven Spring Boot 应用程序:

  • 根(根pom)
    • 后端(Spring后端,有许多REST端点)
    • 网关(api客户端常用配置)
      • xxx-api(连接xxx服务,从openapi生成Java)
      • yyy-api(连接到 yyy 服务,从 openapi 生成 Java)

xxx 和 yyy 服务有自己的传输模型,我需要转换(主要是简化)。我为此使用了mapstruct。

我想知道我应该把我的mapstruct @Mappers和DTO类放在哪里(它们需要放在同一个模块中)。我一方面告诉我 xxx-apiyyy-api 模块可以(最接近数据源),另一方面则说 DTO(因此 @Mapper) s) 应该在 backend 模块中定义(毕竟它们是由 Spring 控制器返回的)。

您对此有何看法?我觉得我太复杂了,但我不确定 DTO 类是否可以(根据设计)放置在 backend 模块中。

java spring maven dto
1个回答
0
投票

我认为这不仅仅是一个与春天有关的问题。在任何生产者-消费者情况下都可以提出这个问题。这个问题可以像“谁描述了数据”一样重新表述。

DTO 是数据模型。所以可能双方都需要了解它们。将它们放置在共享模块中是一个不错的猜测。这可以由后端拥有。

很可能是后端产生答案,并且查询更简单,因此查询通常是函数的参数,而答案通常是一系列数据行。这就是人们经常做的事情。因此后端可以拥有这些类型,但必须将它们导出给消费者。

也许思考不需要用同一种语言编写的模块会有所帮助。如果使用 XML 或 JSON 来传输数据,那么问题是相同的:谁拥有描述数据的军团。这可能更安全地放入生产者中。

© www.soinside.com 2019 - 2024. All rights reserved.