轉載請註明出處:
1. @GrpcServise 的作用和優勢
在沒有使用 @GrpcServise 註解編寫服務端時,我們通常需要自定義 Server 以及埠,包括 start,stop ,註冊service 方法等等,開發比較複雜。
使用 @GrpcService 則可以省去 自定義server,埠,包括start,stop方法等等,可以直接去實現我們需要的 grpc 方法,並使用 @GrpcService註解 就可以完成grpc 服務端的程式碼開發。
使用 @GrpcService 註解與不使用該註解編寫服務端程式碼的主要區別在於,@GrpcService 註解可以使 gRPC Server 自動掃描註解的服務並自動將其繫結到 gRPC 伺服器中,而不需要手動註冊這些服務實現。
使用 @GrpcService 註解的優勢在於:
-
簡化了 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 中。