如何在Spring Boot中实现gRPC服务端?附现有Demo代码示例
将gRPC服务端集成到Spring Boot的步骤
1. 添加Spring Boot gRPC依赖
使用官方维护的gRPC Spring Boot Starter来简化集成,无需手动管理gRPC服务器的生命周期。
Maven依赖(pom.xml)
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>net.devh</groupId> <artifactId>grpc-server-spring-boot-starter</artifactId> <version>2.15.0.RELEASE</version> <!-- 请选用与Spring Boot版本兼容的最新版 --> </dependency> </dependencies>
Gradle依赖(build.gradle)
dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'net.devh:grpc-server-spring-boot-starter:2.15.0.RELEASE' }
2. 修改gRPC服务实现类
将你的HelloServiceImpl改造为Spring管理的Bean,用@GrpcService注解标记,让Spring自动完成服务注册:
package com.example.demo.services; import com.example.demo.HelloRequest; import com.example.demo.HelloResponse; import com.example.demo.HelloServiceGrpc; import net.devh.boot.grpc.server.service.GrpcService; @GrpcService public class HelloServiceImpl extends HelloServiceGrpc.HelloServiceImplBase { @Override public void hello(HelloRequest request, io.grpc.stub.StreamObserver<HelloResponse> responseObserver) { String greeting = "Hello, " + request.getFirstName() + " " + request.getLastName(); HelloResponse response = HelloResponse.newBuilder().setMessage(greeting).build(); responseObserver.onNext(response); responseObserver.onCompleted(); } }
3. 创建Spring Boot启动类
删除原有的GrpcServer类,替换为标准的Spring Boot启动类:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class GrpcSpringBootApplication { public static void main(String[] args) { SpringApplication.run(GrpcSpringBootApplication.class, args); } }
4. 配置gRPC服务端口(可选)
如果需要沿用原来的8080端口,在配置文件中指定:
application.properties
grpc.server.port=8080
application.yml
grpc: server: port: 8080
5. 验证集成效果
启动Spring Boot应用后,直接运行你原有的GrpcClient类,即可与集成后的gRPC服务通信,确认服务正常响应。
内容的提问来源于stack exchange,提问作者Rafael Souza
相关产品推荐
相关产品推荐

