GRPC は protobuf に基づいてインターフェイスを定義します。サーバーサイドとクライアントサイドに分かれます。サーバー側はインターフェースの実装を提供し、クライアントはサーバー側のインターフェースを呼び出すことで期待されるデータを取得します。
<dependency> <groupId>net.devh</groupId> <artifactId>grpc-spring-boot-starter</artifactId> <version>2.12.0.RELEASE</version> </dependency> <dependency> <!-- Java 9+ compatibility --> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </dependency>
プラグインの追加 (注: Wagon-provider-api を自動的に導入できない場合は、ここで導入できます)依存関係を容易にするための依存関係をダウンロードして、依存関係座標を削除します)
<plugin> <!-- protobuf生成插件--> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <protocArtifact>com.google.protobuf:protoc:3.17.3:exe:${os.detected.classifier} </protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.39.0:exe:${os.detected.classifier} </pluginArtifact> <!--默认值--> <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot> <outputDirectory>${project.basedir}/src/main/java</outputDirectory> <clearOutputDirectory>false</clearOutputDirectory> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin>
ディレクトリを追加しますsrc/main/proto
、ディレクトリを設定しますSource Root
にファイル hello.proto
を追加し、ディレクトリ src/main/proto
に次の内容を含む
syntax = "proto3"; //指定proto版本 package com.server; // 生成的Java代码的包名 option java_package = "com.grpc.server"; // 请求参数 message HelloReq{ string name = 1; } // 返回参数 message HelloResp{ string ret = 1; } // rpc service service HelloService{ // service中需要进行调用的具体方法 rpc hello(HelloReq) returns (HelloResp){} }
による Java コードの生成 プラグインが正常にインポートされたら、下の図で選択されている protobuf:compile
および protbuf:compile-custom
をクリックします。対応する Java コード (つまり、インターフェイスの依存関係コード) を順番に生成します
サービスの特定の実装コードは次のとおりです
import io.grpc.stub.StreamObserver; import net.devh.boot.grpc.server.service.GrpcService; @GrpcService public class HelloService extends HelloServiceGrpc.HelloServiceImplBase { @Override public void hello(Hello.HelloReq request, StreamObserver<Hello.HelloResp> responseObserver) { Hello.HelloResp resp = Hello.HelloResp.newBuilder().setRet("你好-->"+request.getName()).build(); responseObserver.onNext(resp); responseObserver.onCompleted(); } }
client ターミナル テストの呼び出しコードは次のとおりです
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class GrpcTest { @Autowired private HelloSerivce helloSerivce; @Test public void test1() throws Exception{ helloSerivce.haha("牛哈哈"); } }
以上がMaven grpc を springboot デモと統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。