今天我們很高興宣布 Spring Batch 3.0 的最終里程碑版本 (下載)。此版本展示了我們對 JSR-352 的支援,並且目前支援所有必需的功能。我們還為現有的 Spring Batch 使用者新增了許多新功能。Spring Batch 是一個輕量級、全面的框架,用於開發穩健的批次應用程式。
Milestone 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 中定義的注入方法注入針對 javax.batch.* 介面開發的批次工件(Spring 的依賴注入、batch.xml 和內聯配置),以及 JSR-352 中提供的所有可擴展性選項(分割和透過線程進行分割)。
我們實作的目標很簡單:遵循 JSR 的規則,而不違反 Spring Batch 已經定義的規則。換句話說,實作規範而不影響現有的 Spring Batch 使用者。我們透過提供兩種實作批次工作的「路徑」來做到這一點。第一種是傳統的 Spring Batch 方式。使用 Spring Batch XML 或 Spring 的 Java 配置,針對 Spring Batch 介面進行開發等。這不會作為 3.0 版本的一部分而改變。第二個「路徑」是 JSR 路徑。這種開發方法使用 JSR-352 定義的 XML 結構描述來配置您的工作,使用 JSR 的 JobOperator
來啟動工作和管理元資料,並且開發人員根據 JSR 的 API 撰寫程式碼。重要的是要注意,這些是兩種截然不同的路徑。雖然使用 Spring Batch 元件可以使用基於 JSR-352 的工作,但在這些上下文中使用它們將受到 JSR 規則的約束。一個例子是注入 JSR-352 中定義的上下文 (StepContext
和 JobContext
)。如果使用傳統的 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 訊息啟動工作的能力。
- 遠端區塊處理 - 提供透過主/從配置遠端 (跨多個 JVM) 執行
ItemProcessor
邏輯的能力。
- 遠端分割 - 提供透過主/從配置遠端 (跨多個 JVM) 執行完整區塊 (讀取/處理/寫入) 的能力。
這些元件允許 Spring Batch 應用程式在許多企業中無縫整合和擴展。
升級以支援 Spring 4 和 Java 8
作為我們努力使相依性保持最新的工作的一部分,我們已更新 Spring Batch 及其各種模組以支援 Spring 4。由於這些更新,Spring 4 將是 Spring Batch 3.0.0.M3 的最低支援 Spring 版本。這不僅帶來了 Spring 4 中大量的新功能,而且還提供了立即在 Java 8 上運行的能力。
其他修復和改進
除了上述大型新功能外,我們還新增了一些較小的功能,並繼續修復錯誤。我們新增的新功能包括新增了 JobScope
和對 SQLite 的支援。
通往候選發佈版本的路線圖
還剩下什麼?在我們接近候選發佈版本時,仍有一些次要工作要做。我們仍在仔細研究 Spring Batch 的相依性,並尋求儘可能多地升級。
結論
3.0.0.M3 標誌著 Spring Batch 的一個關鍵里程碑。它允許開發人員測試基於 JSR-352 的功能,同時仍然擁有 Spring 和 Spring Batch 的基礎來依賴。它也為框架帶來了新功能。我們期待您在論壇、社交媒體和親自發表的評論和回饋!