Spring gRPC 晋升!

工程 | Dave Syer | 2025 年 5 月 13 日 | ...

距离我们上次关于 Spring gRPC博客(不仅仅是发布公告)已经过去了几个月。这次发布标志着该项目从实验性项目晋升为 Spring Portfolio 的正式成员后的首次发布。这不会改变您使用该项目的方式,但它对支持以及该项目对整个产品组合的象征意义产生了一些影响。

最新版本是 0.8.0,它已经在 Maven Central 发布了几周。该版本的主要原因是将其依赖项升级到最新版本,从而将 Spring gRPC 升级到 protobuf-java 库的第 4 版。最简单的入门方法是在 Spring Initializr 上下载一个勾选了“gRPC”的项目。对于希望成为“服务器”或“客户端”的 Spring Boot 应用程序 gRPC,有单独的“启动器”,或者您可以从普通的 spring-grpc-spring-boot-starter 中同时获得两者。版本 0.8.0 将得到支持(在开源和商业客户中),直到下一个版本发布。当我们达到 1.0.0 时,我们将过渡到正常的开源支持策略,该策略将链接到 Spring Boot 的次要版本,并为商业客户提供扩展。我们预计,随着 1.0.0 的发布,与 Spring Boot 直接相关的 Spring gRPC 功能(即启动器、自动配置和外部配置属性)将作为 4.0.0 版本的一部分移至 Spring Boot 本身,因此 Spring gRPC 1.0.0 的支持时间线将与 Spring Boot 4.0.0 相同。

Josh 的博客以来最大的变化可能是对自动创建 gRPC 客户端存根作为 bean 定义的支持。只要您将 @ImportGrpcClients 添加到 @Configuration 类,它就会起作用。例如,这是一个简单的 Spring Boot 应用程序:

@SpringBootApplication
@ImportGrpcClients("localhost:9090")
public class GrpcServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(GrpcServerApplication.class, args);
	}

}

它将从带注解的类的包开始扫描类路径,找到所有 AbstractBlockStub 实现,并为每个实现从一个 Channel 创建一个该类型的 @Bean,其中目标地址在注解中给出。事实上,在这样的 Spring Boot 应用程序中,您不需要注解,您只需为目标地址创建一个配置属性 spring.grpc.client.default-channel.address,自动配置将处理其余部分。一旦完成(无论哪种方式),您可以将一个存根自动装配到您的应用程序代码中,例如:

@Component
class MyThing {

    public MyThing(SimpleBlockingStub stub) {
	    // do something with the stub here to call RPC methods on the remote server
	}

}

或者,如果您更喜欢更多的控制,例如不同的存根类型,您可以使用带有更多属性的 @ImportGrpcClients 注解。您可以显式列出存根的类型,或者您可以提供不同的基本包进行扫描,并且您可以请求特定具体类型的 StubFactory,它知道如何创建您的存根(Spring gRPC 附带了用于来自 Google 的 protoc 编译器的常见代码生成存根类型的工厂)。

我们正在开发 0.9.0 版本。原因之一是 @ImportGrpcClients 工作方式的一些更改——主要是内部更改,但如果您已经有一个自定义的 StubFactory,您将需要对其进行一些小的更改。发布 0.9.0 的另一个原因是测试 Maven Central 的新发布流程,通过 Central Portal。预计这不会对用户产生任何影响。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有