Spring Batch 3.0 里程碑 3 釋出

釋出版本 | Michael Minella | 2014年2月24日 | ...

今天我們高興地宣佈 Spring Batch 3.0 的最終里程碑版本 (下載)。此版本展示了我們對 JSR-352 的支援,並目前支援其所有必需的功能。我們還為現有的 Spring Batch 使用者在 Spring Batch 中添加了許多新功能。Spring Batch 是一個輕量級、全面的框架,用於開發健壯的批處理應用程式。

里程碑 3 中的功能

作為 Spring Batch 3.0.0 版本的最終里程碑,此版本的所有主要功能均已完成。此版本的主要功能包括

  • 支援 JSR-352
  • 將 Spring Batch Integration 提升至 Spring Batch
  • 升級以支援 Spring 4 和 Java 8
  • 其他修復和改進

JSR-352 支援

Spring 在對此規範的貢獻中投入了大量時間和資源。我們透過 JCP 與其他行業專家的合作,JSR-352 驗證了 Spring Batch 在過去六年裡在無數生產環境中實施和經過實戰檢驗的批處理模式,是構建企業關鍵任務批處理應用程式的最佳方法。

3.0.0.M3 是 Spring Batch 第一個符合 JSR-352 的版本,它通過了所有 152 個 SE TCK 測試。Spring Batch 對 JSR-352 的實現允許使用者使用熟悉的 Spring Batch 元件,同時仍然保持與 Java 標準的相容。Spring Batch 支援透過基於 JSR-352 的 XML 配置作業,使用 JSR 中定義的注入方法(Spring 的依賴注入、batch.xml 和內聯配置)注入針對 javax.batch.* 介面開發的批處理工件,以及 JSR-352 中提供的所有可伸縮性選項(透過執行緒進行拆分和分割槽)。

我們實現的目標很簡單:遵循 JSR 的規則,同時不違反 Spring Batch 已經定義的規則。換句話說,在不影響現有 Spring Batch 使用者的情況下實現規範。我們透過提供兩條實現批處理作業的“路徑”來做到這一點。第一條是傳統的 Spring Batch 方式。使用 Spring Batch XML 或 Spring 的 Java 配置,針對 Spring Batch 介面進行開發等。這在 3.0 版本中不會改變。第二條“路徑”是 JSR 路徑。這種開發方法使用 JSR-352 定義的 XML Schema 配置作業,使用 JSR 的 JobOperator 啟動作業並管理元資料,開發人員根據 JSR 的 API 編寫程式碼。需要注意的是,這是兩條完全不同的路徑。雖然使用 Spring Batch 元件可以與基於 JSR-352 的作業一起工作,但它們在這些上下文中的使用將由 JSR 的規則決定。一個例子是注入 JSR-352 中定義的上下文(StepContextJobContext)。如果使用傳統的 Spring Batch 方法配置作業並透過常規 Spring Batch 元件啟動,這些上下文將不會對批處理工件可用。但是,如果您透過 JSR-352 XML 配置作業並透過 JSR-352 JobOperator 啟動它,這些上下文將在適當的位置被注入。

需要指出的是,Spring Batch 不僅僅實現了 JSR-352。它在許多方面都超出了規範的範圍

  • 元件 - Spring Batch 提供了 17 種不同的 ItemReader 實現、16 種 ItemWriter 實現,以及許多其他在生產環境中經過多年測試的元件。
  • 可伸縮性 - JSR-352 僅為單個 JVM 提供伸縮選項(透過執行緒進行分割槽和拆分)。Spring Batch 提供多 JVM 可伸縮性選項,包括遠端分割槽和遠端分塊。
  • Spring 依賴注入 - 雖然 JSR-352 提供了一種“輕量級依賴注入”的形式,但它對批處理工件的構造施加了一些限制(例如,必須使用無引數建構函式)。Spring Batch 構建在 Spring 之上,並受益於 Spring Framework 強大功能的優勢。
  • 基於 Java 的配置 - 雖然 Spring 基於 XML 的配置選項眾所周知,但 Spring,特別是 Spring Batch,提供了使用基於 Java 的配置的型別安全性來配置作業的選項。
  • Hadoop/大資料整合 - Spring Batch 是在 Spring 生態系統中與 Hadoop 和其他大資料儲存互動的基礎工具。Spring for Apache Hadoop 提供了一些批處理相關的擴充套件,可以使用 Spring Batch 在 Hadoop 叢集上協調工作。Spring XD 在 Spring Batch 的基礎上,不僅提供了執行能力,還提供了類似於 Spring Batch Admin 的管理功能,適用於任何環境。

Spring 將繼續參與 JSR-352 的演進,因為它將經歷維護修訂,並期待對 JCP 流程做出進一步貢獻。

將 Spring Batch Integration 提升至 Spring Batch

Spring Batch Integration 幾年來一直是 Spring Batch Admin 下一個鮮為人知的子專案。然而,考慮到這個庫提供的功能的強大及其在企業開發中的有用性,我們決定將其從 Spring Batch Admin 的旗下移至 Spring Batch 的旗下。Spring Batch Integration 旨在提供連線批處理和整合處理的有用元件,為啟動和伸縮批處理應用程式提供了多種選項。功能包括

  • 非同步 ItemProcessor/ItemWriter - 在另一個執行緒上執行 ItemProcessor 邏輯,將一個 Future 返回給 ItemWriter。一旦 Future 返回,結果就會被寫入。
  • JobLaunchingMessageHandler/JobLaunchingMessageGateway - 提供透過通道接收到的 Spring Message 啟動作業的能力。
  • 遠端分塊 (Remote Chunking) - 提供透過主/從配置遠端(跨多個 JVM)執行 ItemProcessor 邏輯的能力。
  • 遠端分割槽 (Remote Partitioning) - 提供透過主/從配置遠端(跨多個 JVM)執行完整塊(讀取/處理/寫入)的能力。

這些元件使得 Spring Batch 應用程式能夠在許多企業中無縫整合和伸縮。

升級以支援 Spring 4 和 Java 8

作為我們保持依賴項最新的努力的一部分,我們已經更新了 Spring Batch 及其各種模組,以支援 Spring 4。由於這些更新,Spring 4 將是 Spring Batch 3.0.0.M3 支援的最低 Spring 版本。這不僅帶來了 Spring 4 中的眾多新功能,還提供了立即在 Java 8 上執行的能力。

其他修復和改進

除了上述主要新功能之外,我們還添加了一些較小的功能,並繼續修復 bug。我們新增的新功能包括增加了 JobScope 和對 SQLite 的支援。

釋出候選版本路線圖

那麼還剩下什麼?當我們接近釋出候選版本時,仍有一些少量工作需要完成。我們仍在仔細審查 Spring Batch 的依賴項,並尋求儘可能多地進行升級。

結論

3.0.0.M3 標誌著 Spring Batch 的一個重要里程碑。它允許開發人員測試基於 JSR-352 的功能,同時仍然可以依賴 Spring 和 Spring Batch 的基礎。它還為框架帶來了新功能。我們期待您在論壇、社交媒體和線下活動中提出意見和反饋!

獲取 Spring 新聞簡報

透過 Spring 新聞簡報保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲取支援

Tanzu Spring 透過一份簡單訂閱,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援和二進位制檔案。

瞭解更多

近期活動

檢視 Spring 社群的所有近期活動。

檢視全部