DTO-多种服务和冗余DTO

时间:2019-04-23 00:54:40

标签: java spring-boot microservices

对于使用spring-boot开发的应用程序,我们遵循微服务架构。为了解释这个问题,让我们考虑3个不同的服务A,B,C。服务A和B也使用了服务C的某些API。

我在Project C(服务C)中有API的DTO。我的问题是-对于项目A和B,是否应该创建冗余的DTO类来使用Service C API?还是我应该为DTO创建一个单独的jar,以便可以在多种服务之间重用?

如果遇到类似情况,您会采取什么方法?

3 个答案:

答案 0 :(得分:1)

我认为这取决于某些特定的用例。

如果DTO是项目中许多模块中使用的通用类,则应将其包含在common模块中。

我认为还有另一种解决方案,您可以将服务 C 视为API服务(例如Google Map API)。因此,当您为客户提供服务时,应该为客户提供一个库。因此,开发服务 C 后,您可以开发一个C service library,其中包含其客户所需的 DTO

要使用C服务中的API,A和B需要导入C service library并调用(new CService()).getSomething()

答案 1 :(得分:1)

在您的项目中

创建common (例如com.example.common)包。然后,创建一个名称为dto (例如:com.example.common.dto)的子包,然后放置所有服务中通用的所有DTO。 br /> 应该采用这种方法。

答案 2 :(得分:1)

是的,您可以将它们放在单独的commons API中,并且可以在依赖项中使用此jar。这将很有帮助,因为您甚至可以在此commons包中编写一些接口(用于服务)或一些实用程序类,例如加密/解密(用于auth),并在您的任何微服务中实现它们。