转载请注明出处:
在没有使用 @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 注解可以避免手动维护所有服务实现实例的繁琐工作,并使代码更易于管理和维护。
<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 中。