Java DTO-多种服务和;冗余DTO

Java DTO-多种服务和;冗余DTO,java,spring-boot,microservices,Java,Spring Boot,Microservices,对于使用spring boot开发的应用程序,我们遵循micro service arch。为了解释这个问题,让我们考虑3种不同的服务A,B,C。服务C的一些API也被服务A和B消耗。 我有一个项目C(服务C)中API的DTO。我的问题是-对于项目A和B,我应该创建冗余的DTO类来使用服务C API吗?或者我应该为DTO创建一个单独的jar,以便可以跨多个服务重用它 如果遇到类似情况,您会采取什么方法?我认为这取决于某些特定的用例 如果DTO是一个在项目的许多模块中使用的公共类,那么它应该包含在

对于使用spring boot开发的应用程序,我们遵循micro service arch。为了解释这个问题,让我们考虑3种不同的服务A,B,C。服务C的一些API也被服务A和B消耗。 我有一个项目C(服务C)中API的DTO。我的问题是-对于项目A和B,我应该创建冗余的DTO类来使用服务C API吗?或者我应该为DTO创建一个单独的jar,以便可以跨多个服务重用它


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

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

如果
DTO
是一个在项目的许多模块中使用的公共类,那么它应该包含在
common
模块中

还有一个解决方案,我认为您可以将服务C视为一个API服务(例如googlemapapi)。所以,当你为你的客户提供服务时,你应该为你的客户提供一个图书馆。因此,在开发服务C之后,您可以开发一个
C服务库
,其中包含客户所需的DTO


要使用C服务中的API,A和B需要在项目中导入
C服务库
并调用
(new CService()).getSomething()
创建
common
(例如:com.example.common)包。然后,创建一个名为
dto
(例如:com.example.common.dto)的子包,并放置所有服务中常用的所有dto。

应该采取这种办法

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

我非常喜欢服务提供自己的客户端库的想法。只有一个问题-我从哪里可以学到这样的最佳实践?或者你是怎么学会的?你能指导我吗?我是从实践项目中学到的。另外,我使用了很多API,它们中的大多数都为我们提供了一个库。所以我认为这可能是一个可行的解决方案。你可以看看。这个网站也有很多你可以学习的资源,我只是一个新生,所以有很多东西我需要学习:Dnice。对我来说,你是大四的:)