目錄
1. 說明
2. 公共部分
2.1 新增依賴
2.2 新增proto依賴檔
2.3 透過protobuf產生Java程式碼
3. server端介面具體實作
4 client端介面具體實作
首頁 Java java教程 maven grpc整合springboot demo的方法

maven grpc整合springboot demo的方法

May 13, 2023 pm 01:01 PM
grpc maven springboot

    1. 說明

    GRPC基於protobuf來定義介面。分為server端和client端。其中server端提供介面實現,client透過呼叫server端介面從而取得期望資料。

    2. 公共部分

    2.1 新增依賴

            <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>
    登入後複製

    2.2 新增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){}
    }
    登入後複製

    2.3 透過protobuf產生Java程式碼

    外掛程式匯入成功後,點選下圖選取的protobuf:compileprotbuf:compile-custom 依序產生對應的Java程式碼(也就是介面依賴程式碼)

    maven grpc整合springboot demo的方法

    3. server端介面具體實作

    service程式碼如下

    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();
        }
    }
    登入後複製

    4 client端介面具體實作

    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 demo的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    2 週前 By 尊渡假赌尊渡假赌尊渡假赌
    倉庫:如何復興隊友
    4 週前 By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island冒險:如何獲得巨型種子
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    2 週前 By 尊渡假赌尊渡假赌尊渡假赌
    倉庫:如何復興隊友
    4 週前 By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island冒險:如何獲得巨型種子
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱門文章標籤

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    如何在 Golang 中使用 gRPC 實作檔案上傳? 如何在 Golang 中使用 gRPC 實作檔案上傳? Jun 03, 2024 pm 04:54 PM

    如何在 Golang 中使用 gRPC 實作檔案上傳?

    避免Maven環境配置常見錯誤:解決配置問題 避免Maven環境配置常見錯誤:解決配置問題 Feb 19, 2024 pm 04:56 PM

    避免Maven環境配置常見錯誤:解決配置問題

    Java Maven建置工具進階:最佳化編譯速度與依賴管理 Java Maven建置工具進階:最佳化編譯速度與依賴管理 Apr 17, 2024 pm 06:42 PM

    Java Maven建置工具進階:最佳化編譯速度與依賴管理

    指導設定Maven本地庫:高效管理專案依賴 指導設定Maven本地庫:高效管理專案依賴 Feb 19, 2024 am 11:47 AM

    指導設定Maven本地庫:高效管理專案依賴

    Maven進階教學:深入探索Jar套件導入的各種方法 Maven進階教學:深入探索Jar套件導入的各種方法 Feb 23, 2024 pm 02:57 PM

    Maven進階教學:深入探索Jar套件導入的各種方法

    Maven阿里雲鏡像配置詳解 Maven阿里雲鏡像配置詳解 Feb 21, 2024 pm 10:12 PM

    Maven阿里雲鏡像配置詳解

    建置流暢無阻:如何正確配置Maven鏡像位址 建置流暢無阻:如何正確配置Maven鏡像位址 Feb 20, 2024 pm 08:48 PM

    建置流暢無阻:如何正確配置Maven鏡像位址

    優化Maven專案打包流程,提升開發效率 優化Maven專案打包流程,提升開發效率 Feb 24, 2024 pm 02:15 PM

    優化Maven專案打包流程,提升開發效率

    See all articles