对于使用spring-boot开发的应用程序,我们遵循微服务架构。为了解释这个问题,让我们考虑3个不同的服务A,B,C。服务A和B也使用了服务C的某些API。
我在Project C(服务C)中有API的DTO。我的问题是-对于项目A和B,是否应该创建冗余的DTO类来使用Service C API?还是我应该为DTO创建一个单独的jar,以便可以在多种服务之间重用?
如果遇到类似情况,您会采取什么方法?
答案 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),并在您的任何微服务中实现它们。