当前位置: 首页 > 知识库问答 >
问题:

如何在一个模块(a)中创建一个类来实现另一个模块(B)中的抽象类

郤令
2023-03-14

我使用微服务架构和Spring-Cloud堆栈。

对于服务之间的通信,我决定使用gRPC

我有一个名为Accounting的服务,今天我实现了一个gRPC接口项目,并将其添加到Git存储库中。

我添加了gRPC-接口会计服务使用Git-子模块使用以下命令:

git submodule add -b master <Git-Repo-URL>

git submodule init

现在我想在Accounting中创建一个服务类,实现gRPC interface中的一个类,但它不识别gRPC interface模块中的任何类!!

我想我需要在设置中做一些更改。gradle构建。gradle会计模块中的文件,但我不知道应该做什么更改,甚至不知道在互联网上寻找什么主题。

任何帮助或线索都将不胜感激!!


共有1个答案

濮阳研
2023-03-14

听上去你对微服务有点不知所措,但是为了回答上面提到的问题:

想想“twitter API”。Twitter有两个“项目”(不是git子模块的意思,而是英语单词的意思)。twitter是一个网站,它是一个非公开的代码,可以运行所有的功能,尤其是当你连接到api时,它会给出相应的代码。啁啾com。但也有一个开源(或至少是公开的)库,可以包含在java项目中,让您可以与twitter API对话。这个公共API包括与twitterverse中的概念相匹配的模型类(例如“一条推文”、“一个用户”、“一条直接消息”、“一个用户决定跟随另一个用户的概念”等),以及使用参数调用并返回这些模型类实例的函数(可能在“API”对象上)。

你需要做同样的事情。一个微服务由两个项目组成:它的API(另一个微服务本身包含)和实际代码,后者类似于twitter提供的公共“java API”库。可能是一个项目,也可能是一百万个项目,微服务的一个重要部分是:从依赖于微服务B的微服务a的角度来看,除了描述其公共API的部分之外,你根本不需要了解任何关于B的信息。就服务而言,其他一切都是无关紧要的实现细节。

如果你在另一个微服务中包含了一个微服务的所有代码,那么你最终得到的每一个“微服务”都包含了所有其他微服务的所有代码,你的服务就不再是微服务了。

是的,这很烦人。你不需要复制代码(定义模型的“公共应用编程接口”部分也可以是微服务本身的依赖项),但是每个微服务都会变成维护两个独立的微服务,你需要找到一种方法让“公共应用编程接口”部分像推特应用编程接口一样可分发。你可能不想把它放在maven中心,但这就是为什么maven(sonatype,真的)、gradle等都提供了一个公司范围的中间依赖服务器的概念——一个可以托管你的“公共应用编程接口”项目的服务器。以及本地依赖-阅读构建系统的文档,了解如何处理非开源公开的依赖(即不在maven中心)。

 类似资料:
  • 问题内容: Play框架文档在模块创建方面有些薄弱。 如何创建一个模块? 我已经读到大型应用程序可以分为多个模块,如何? 模块不能/不能做什么?(是否可以访问低级API?) 播放模块可以公开抽象的JPA类吗? 打包模块的最佳方法是什么? 如何部署/分配播放模块? 我想您有个主意…向我们介绍所有使用Playframework的模块。 问题答案: 如何创建一个模块? 我已经读到大型应用程序可以分为多个

  • 如图,我将framework中的ResponseResult引入到blog中,然后在maven install命令下报错。 blog依赖了framework。是不是因为我两个模块的java下的包名一样导致的,如果是的话,该怎么改呢?

  • 问题内容: 我已使用以下命令“ go mod init database”在“数据库”文件夹中的“ GOPATH”之外创建了个人使用的模块库,但我不知道: 如何在其他模块中使用/ 导入 该模块? 操作系统: Windows 7 ,Go: v1.11 问题答案: 最简单,可行的现成解决方案是将您的包/模块放入VCS(例如github.com),因此其他包(在其他模块内部)可以通过导入来简单地引用它:

  • 问题内容: 我试图使用Dagger在正在构建的应用程序上进行依赖注入,当我拥有一个程序包的模块(取决于注入器(可能是另一个模块)提供的值)时,在构造适当的DAG时遇到了麻烦。 如果我有一个用于配置变量的简单模块(例如,我可能想换成测试环境) 而另一个模块依赖于它,例如 我尝试在构造函数中引导注入的行失败,并且它抱怨我没有在适当的模块中指定显式行。 通过反复试验,我发现如果在行中添加,这种情况就消失