今天我們高興地宣佈 Spring Batch 3.0 釋出。Spring Batch 的此版本提供了對 JSR-352 的支援——我們致力於提供此支援,併為我們現有的 Spring Batch 社群提供了許多新功能。
Spring Batch 3.0 中的特性
此版本的主要特性包括
- JSR-352 支援
- 將 Spring Batch Integration 提升到 Spring Batch 中
- 全面檢修依賴項
- 支援 SQLite
- 作業作用域
- 移除“archetypes”,轉而支援 Spring Boot
- 將構建 Spring Batch 的方式從 Maven 切換到 Gradle
JSR-352 支援
作為 JEE7 中最重要的新特性之一,JSR-352 將批處理的標準化引入 Java 技術棧。Spring 團隊不僅有兩名成員在專家組中為規範提供了大量輸入,而且 Spring Batch 成為大部分程式設計模型的靈感來源。Spring Batch 3.0 透過提供經過最多生產測試的程式碼庫來實施此規範,繼續履行 Spring 對 JSR-352 的承諾。
注意 JSR-352 和 Spring Batch 之間的區別很重要。JSR-352 提供三件事
- 構建批處理元件的 API
- 用於配置批處理元件的基於 XML 的 DSL
- 批處理元件如何互動的契約
JSR-352 不提供批處理元件的任何實現。Spring Batch 提供了 17 個 readers、16 個 writers 以及無數其他實用工具和擴充套件,這些都在企業生產環境中經過多年測試。Spring Batch 提供了超越單個 JVM 的可伸縮性選項。最後,Spring Batch 透過 Spring for Apache Hadoop 專案和作為 Spring XD 的基石提供了大資料支援。
要了解更多關於 Spring Batch 對 JSR-352 的實現,請訪問我們的參考文件:https://docs.springframework.tw/spring-batch/trunk/reference/html/jsr-352.html
將 Spring Batch Integration 提升到 Spring Batch
從外部來看,何時使用 Spring Batch 以及何時使用 Spring Integration 可能會令人困惑。說實話,並不總是有一個明確的非此即彼的答案。在許多情況下,結合使用這兩種技術是提供健壯、可伸縮解決方案的最佳選擇。這就是開發 Spring Batch Integration 的原因。這個模組是 Spring Batch 擴充套件的集合,它允許開發人員使用 Spring Integration 來擴充套件 Spring Batch 的能力。多 JVM 可伸縮性和訊息驅動的作業啟動等功能,使用此模組無需自定義程式碼,只需最少的配置即可實現。
Spring Batch Integration 中提供的功能將批處理擴充套件到 JSR-352 提供的功能之外,以提供健壯的企業級解決方案。您可以在參考文件中閱讀更多關於 Spring Batch Integration 及其元件的資訊:https://docs.springframework.tw/spring-batch/trunk/reference/html/springBatchIntegration.html。
全面檢修依賴項
作為 Spring 整個產品組合持續努力的一部分,Spring Batch 的第三方依賴項已更新。這使得 Spring Batch 使用者可以使用與 Spring Batch 整合最可靠的最新庫。
支援 SQLite
大多數整合測試場景使用 HSQLDB 作為資料來源,因為它能夠輕鬆建立記憶體資料庫。然而,有時一個簡單的單檔案選項會更好。因此,我們已將 SQLite 新增為 Spring Batch 倉庫支援的資料庫。
作業作用域
Spring Batch 提供了兩個自定義 bean 作用域。第一個是 step 作用域,多年來一直用作延遲 bean 初始化直到 bean 所使用的 step 執行的方式。在 Spring Batch 3.0 中,我們添加了 job 作用域。這將允許延遲初始化作業級別元件(例如 JobExecutionListeners),併為這些元件提供作業引數注入等功能。您可以在此處閱讀參考手冊中有關作業作用域的更多資訊:https://docs.springframework.tw/spring-batch/trunk/reference/html/configureStep.html#job-scope。
移除“archetypes”,轉而支援 Spring Boot
傳統上,Spring Batch 提供了一個示例 Maven 專案作為引導 Spring Batch 專案的一種方式。有了 Spring Boot,我們已經移除了這些專案,轉而使用 Spring Boot 提供的動態引導功能。我們認為 Boot 提供了比舊的“archetypes”提供的方案優越得多的選擇。
從 Maven 遷移到 Gradle
最後,此版本是 Spring Batch 第一個將內部構建系統從 Maven 遷移到 Gradle 的版本。此更改對使用 jar 包的開發人員沒有任何影響。Maven 使用者仍然可以透過 Maven Central 獲取它們。
展望未來
隨著此版本的釋出,我們期待計劃和開發我們的 3.1 版本。3.1 版本將有兩個主要主題:簡化和支援 Spring XD 的工作。
在簡化方面,我們希望提高 Spring Batch 的可用性,使其可以被考慮用於不太“繁重”的流程。透過專注於這一點,它允許開發人員“發展”一個解決方案。許多時候,一些開始只是簡單的指令碼,會演變為企業需要依賴的任務關鍵型功能。我們希望 Spring Batch 在指令碼階段就被考慮,這樣當該功能需要企業級解決方案時,它已經到位了。
除了核心的 Spring Batch 功能外,Spring Batch 還作為 Spring XD 的核心技術。我們將繼續透過 Spring XD 和 Spring for Apache Hadoop 擴充套件 Spring Batch 的能力,以支援大資料解決方案。
結論
3.0.0 版本標誌著 Spring Batch 下一個重要里程碑的完成。它將 JSR-352 提供的標準帶到我們的社群,併為高階使用者提供了詳盡的附加功能集合。我們期待您在論壇、社交媒體和 SpringOne2GX 現場提供反饋!