@GrpcServise 註解的作用和使用

香吧香發表於2023-05-18

轉載請註明出處:

1. @GrpcServise 的作用和優勢

  在沒有使用 @GrpcServise 註解編寫服務端時,我們通常需要自定義 Server 以及埠,包括 start,stop ,註冊service 方法等等,開發比較複雜。

  使用 @GrpcService 則可以省去 自定義server,埠,包括start,stop方法等等,可以直接去實現我們需要的 grpc 方法,並使用 @GrpcService註解 就可以完成grpc 服務端的程式碼開發。

  使用 @GrpcService 註解與不使用該註解編寫服務端程式碼的主要區別在於,@GrpcService 註解可以使 gRPC Server 自動掃描註解的服務並自動將其繫結到 gRPC 伺服器中,而不需要手動註冊這些服務實現。

  使用 @GrpcService 註解的優勢在於:

  1. 簡化了 gRPC Server 的配置

    因為 Spring Boot 提供自動配置管理,所以無需建立自己的伺服器例項或手動將服務繫結到伺服器上。Spring Boot 能夠自動註冊服務 Bean 並將其新增到正確的位置。

    2. 易於維護

  當編寫大型應用程式時,可能需要處理數百個介面和服務。使用 @GrpcService 註解可以避免手動維護所有服務實現例項的繁瑣工作,並使程式碼更易於管理和維護。

2.@GrpcServise 的使用

  下面是一個簡單的示例,展示瞭如何使用 @GrpcService 註解定義服務實現:
  1.maven中新增相關的依賴:
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-spring-boot-starter</artifactId>
    <version>${grpc.version}</version>
</dependency>

<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-core</artifactId>
    <version>${grpc.version}</version>
</dependency>

  2.使用示例:

@GrpcService
public class MyServiceImpl extends MyServiceGrpc.MyServiceImplBase {
    @Override
    public void myMethod(MyRequest request, StreamObserver<MyResponse> responseObserver) {
       // ...
    }
}

  同時,我們可以在spring boot的配置檔案中設定grpc 相關的屬性,例如 指定埠:

grpc:
  server:
    port: 8888

  @GrpcService 是一個 Spring Boot 處理器,它會查詢實現了 grpc::BindableService 介面的類,並將其包裝成一個 Spring Bean 物件。然後,將這些 Bean 物件註冊到 gRPC Server 中。

 

相關文章