Java 如何跨微服务拥有通用DTO或实体

Java 如何跨微服务拥有通用DTO或实体,java,microservices,spring-cloud,Java,Microservices,Spring Cloud,假设我有5种不同的微服务。每个都使用一个公共DTO,即UserDTO.java或entity User.java 如果所有人都能访问这些DTO,我提出了两种方法 要在所有微服务中放置所有这些DTO 要创建一个项目,请说projectcommons,并将所有公共DTO保留在那里,然后在所有微服务中添加此项目的依赖项 我知道跨微服务共享公共DTO会扼杀微服务的概念/原则,但我想知道还有其他方法可用吗?事实上,共享公共代码库不会扼杀将更改隔离到一个微服务的概念/原则,只要你严格的版本库。这样,一个

假设我有5种不同的微服务。每个都使用一个公共DTO,即UserDTO.java或entity User.java

如果所有人都能访问这些DTO,我提出了两种方法

  • 要在所有微服务中放置所有这些DTO

  • 要创建一个项目,请说projectcommons,并将所有公共DTO保留在那里,然后在所有微服务中添加此项目的依赖项


  • 我知道跨微服务共享公共DTO会扼杀微服务的概念/原则,但我想知道还有其他方法可用吗?

    事实上,共享公共代码库不会扼杀将更改隔离到一个微服务的概念/原则,只要你严格的版本库。这样,一个微服务团队就可以决定它需要共享库中的新功能,并且可以增加库的版本号并添加新功能。使用该库的现有微服务在独立决定开始使用该库的较新版本之前不会受到影响

    这就是我们要做的。我们在微服务中共享jar文件,但我们将这些jar文件的特定版本推送到Nexus,并在每个微服务中按版本号引用这些jar文件

    请注意,这个概念与依赖于第三方组件(如ApacheCommons库)的两个微服务没有什么不同。仅仅因为Apache提供了一个新版本的库,并不意味着任何人的二进制文件都会改变。依赖于该库的每个代码库都可以决定是否以及何时移动到新版本,而不依赖于另一个代码库可能使用的版本或库的最新版本。

    请检查它是否有帮助。