本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
两周之前,我注意到 Spring 官方发布了 spring-grpc 这个新框架,并且已经正式 GA 了,当前最新版本为 1.0.0。
我看这个框架很少有程序员写这方面的文章,可能是刚推出来不久吧。所以,我这里准备尝个鲜,试着聊聊 spring-grpc 的前世今生,揭开它的诞生之谜,并与社区方案全面对比,助力大家掌握下一代 RPC 框架的最佳实践。
spring-grpc 的诞生
grpc 框架市面上已经有不少了,但 Spring 官方还是决定推出自有的 grpc 框架。
下面我们一起看看 Spring 生态的“官方答案”给出的理由。
为什么要造这个新轮子?
要知道在 spring-grpc 出现之前,Spring 生态中的 gRPC 支持主要依赖社区项目(如 grpc-spring-boot-starter)。虽然这些项目功能强大,但 Spring 团队意识到了这些社区项目有几个核心痛点。
- 集成深度不足:社区项目难以完全融入 Spring Security、Spring MVC 等核心模块
- 配置复杂度高:需要手动处理 Protobuf 编译、服务注册、拦截器配置等繁琐工作
- 缺乏统一标准:多个社区项目并存,没有“官方背书”的最佳实践
- 云原生支持:在 Kubernetes、服务网格等场景下需要更原生的支持
正如 Spring 团队在 2025 年 1 月的官方博客https://spring.io/blog/2025/01/17/spring-grpc-0-3-0中所说,spring-grpc 的目标是成为 Spring 生态中 gRPC 支持的标准方案,让开发者能像使用 Spring MVC 一样简单地使用 gRPC。
说白了,Spring 需要制定 grpc 的标准方案,深度基础,简化使用,云原生等,所以决定自己重新造一个轮子。
它要解决什么问题?
spring-grpc 的核心使命可以总结为:让 gRPC 在 Spring 中像 @Controller 一样简单。
- 零配置启动:自动配置 gRPC 服务器、客户端、健康检查、指标监控
- 安全无缝集成:原生支持 Spring Security 的认证/授权机制
- Servlet 生态融合:可将 gRPC 服务嵌入到现有 Spring Web 应用中,共享 HTTP/2 端口
- 可观测性:自动集成 Spring Boot Actuator、Micrometer 指标和链路追踪
- 生产就绪:提供完善的异常处理、超时控制、负载均衡策略
让 grpc 在 Spring 中开箱即用。
三大 gRPC 框架深度对比
目前 Java 生态常用的有三种 gRPC 集成方案,我们用一个表格来看清它们的差异。
| 特性 | 官方 gRPC-Java | 社区 grpc-spring-boot-starter | 官方 spring-grpc |
|---|---|---|---|
| 维护方 | Google gRPC 团队 | 社区(原 yidongnan,现迁移至 grpc-ecosystem) | Spring 官方团队 |
| 最新版本 | 1.59.0+ | 2.15.0.RELEASE | 1.0.0 |
| 成熟度 | 极为成熟 | 生产验证 | 快速发展中 |
| Spring 集成 | 手动配置 | 深度集成 | 原生集成(官方血统) |
| Spring Security | 需手动实现 | 支持 | 完整支持(Servlet 引擎) |
| 自动配置 | 无 | 丰富 | 更智能(Spring Initializr 原生支持) |
| 性能 | 极致(无框架开销) | 优秀(约 5-10% 损耗) | 良好(优化中) |
| 适用场景 | 性能极致追求、独立服务 | 企业级 Spring 应用、微服务 | Spring 生态重度用户、云原生 |
随着 spring-grpc 的发展,它很可能后来居上,一个 @GrpcController 搞定一切,还可以和 @RestController 并存使用。
grpc-spring-boot-starter
grpc-spring-boot-starter作为目前最成熟的选择,它提供了:
- 丰富的注解:
@GrpcService、@GrpcClient简化开发 - 生态完善:支持 Spring Cloud(Eureka/Consul/Nacos)、Sleuth 链路追踪
- 功能稳定:经过大规模生产验证,文档社区活跃
但是,它毕竟是“第三方”的,在 Spring Security 深度整合、Servlet 栈统一等方面存在天花板。Spring 需要一个亲儿子。
spring-grpc 的杀手锏
spring-grpc 最大的差异化在于可以嵌入到 Spring Web 应用中,让你的应用同时提供:
- RESTful API (@Controller)
- gRPC API (@GrpcController)
- GraphQL/WebSocket 等
让你的 grpc 用起来和 mvc 一样简单。同时,可以全部共享同一个 HTTP/2 端口和 Servlet 容器!这在需要逐步从 REST 迁移到 gRPC 的场景中是无价之宝。
另外,随着即将发布的 JDK 26,HTTP/3 QUIC 也将会被无缝的支持。
Hello spring-grpc 入门
根据官方博客https://spring.io/blog/2025/01/17/spring-grpc-0-3-0,最快的方式是通过 Spring Initializr。推荐使用正式的 GA 版本,v1.0.0,只需 5 分钟即可快速入门上手。
项目初始化
访问 start.spring.io,添加gRPC依赖,生成项目。它已经包含了所有必要的 Protobuf 编译插件配置。
定义服务(proto/helloworld.proto)
syntax = "proto3";
package com.example.demo;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
实现服务(无需编译插件配置!)
import org.springframework.grpc.server.service.GrpcService;
@GrpcService
public class GreeterService extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
String message = "Hello, " + request.getName() + "!";
HelloReply reply = HelloReply.newBuilder()
.setMessage(message)
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}
就是这么简单!不需要手动配置 gRPC Server,不需要处理端口监听,Spring Boot 自动完成一切。
客户端调用
import org.springframework.grpc.client.GrpcClient;
@Service
public class HelloClient {
@GrpcClient("localhost", 9090)
private GreeterGrpc.GreeterBlockingStub greeterStub;
public String sayHello(String name) {
HelloRequest request = HelloRequest.newBuilder()
.setName(name)
.build();
HelloReply reply = greeterStub.sayHello(request);
return reply.getMessage();
}
}
其它的核心组件集成,比如:Spring Security 原生集成(杀手级特性)、智能自动配置、一键开启可观测性等等,我就不细说了,官方文档中都有。
总结与展望
spring-grpc 目前已发布 1.0.0 的正式 GA 版本,功能完备,社区正在蓬勃发展。如果你正在进行 grpc 框架选型,不防抓住这次尝试 spring-grpc 的最佳时机!
因为 spring-grpc 提供完整的 Spring Cloud 集成(服务发现、配置中心),反应式编程支持(Project Reactor),更完善的测试工具(@GrpcTest 注解),企业级技术文档和迁移指南。
技术的演进永不停歇。spring-grpc 的出现不是推翻社区的努力,而是 Spring 官方对开发者需求的正式回应。它代表着 Spring 生态在云原生时代的又一次自我革新。最后无论你现在选择哪个方案,理解其设计哲学和适用边界,才是架构决策的关键。
参考资料
- Spring 官方博客:
https://docs.spring.io/spring-grpc/reference/ - spring-grpc GitHub:
https://github.com/spring-projects/spring-grpc - 社区 grpc-spring 项目:
https://github.com/grpc-ecosystem/grpc-spring

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!