領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多距離我們上次關於 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。預計這不會對使用者產生任何影響。