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
로 설정한 다음 src/main/proto 아래에 hello.proto
파일을 추가하면 내용은 다음과 같습니다src/main/proto
,并将目录设置为Source Root
,然后在目录src/main/proto
下添加文件hello.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){} }
插件导入成功后,点击下图选中的protobuf:compile
和protbuf:compile-custom
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(); } }2.3 protobuf를 통해 Java 코드 생성
플러그인을 성공적으로 가져온 후 , 아래 그림에서 선택한 protobuf:compile
을 클릭하고 protbuf:compile-custom
에 해당하는 Java 코드(즉, 인터페이스 종속성 코드)를 순차적으로 생성합니다
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("牛哈哈"); } }4 클라이언트 측 인터페이스🎜🎜클라이언트 측 테스트 호출 코드의 구체적인 구현은 다음과 같습니다🎜rrreee
위 내용은 springboot 데모와 maven grpc를 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!