我有带有以下模块的 Maven Spring Boot 应用程序:
xxx 和 yyy 服务有自己的传输模型,我需要转换(主要是简化)。我为此使用了mapstruct。
我想知道我应该把我的mapstruct @Mappers和DTO类放在哪里(它们需要放在同一个模块中)。我一方面告诉我 xxx-api 和 yyy-api 模块可以(最接近数据源),另一方面则说 DTO(因此 @Mapper) s) 应该在 backend 模块中定义(毕竟它们是由 Spring 控制器返回的)。
您对此有何看法?我觉得我太复杂了,但我不确定 DTO 类是否可以(根据设计)不放置在 backend 模块中。
我认为这不仅仅是一个与春天有关的问题。在任何生产者-消费者情况下都可以提出这个问题。这个问题可以像“谁描述了数据”一样重新表述。
DTO 是数据模型。所以可能双方都需要了解它们。将它们放置在共享模块中是一个不错的猜测。这可以由后端拥有。
很可能是后端产生答案,并且查询更简单,因此查询通常是函数的参数,而答案通常是一系列数据行。这就是人们经常做的事情。因此后端可以拥有这些类型,但必须将它们导出给消费者。
也许思考不需要用同一种语言编写的模块会有所帮助。如果使用 XML 或 JSON 来传输数据,那么问题是相同的:谁拥有描述数据的军团。这可能更安全地放入生产者中。