今天,我們很高興地宣布 Spring Batch 3.0 的發布。 此版本的 Spring Batch 支援 JSR-352 - 我們致力於提供該支援,以及為我們現有的 Spring Batch 社群提供許多新功能。
Spring Batch 3.0 中的功能
此版本的主要功能包括
- JSR-352 支援
- 將 Spring Batch Integration 提升到 Spring Batch
- 徹底檢修相依性
- 支援 SQLite
- Job scope (任務範圍)
- 取消使用 "archetypes",改用 Spring Boot
- 將 Spring Batch 的建置從 Maven 切換到 Gradle
JSR-352 支援
作為 JEE7 中最重要的新功能之一,JSR-352 將批次處理標準化引入到 Java Stack 中。 Spring 團隊不僅在專家組中為該規範提供了廣泛的輸入(有兩名團隊成員),而且 Spring Batch 還是大多數程式設計模型的靈感來源。 Spring Batch 3.0 繼續 Spring 對 JSR-352 的承諾,提供經過最多生產測試的程式碼庫來實現此規範。
重要的是要注意 JSR-352 和 Spring Batch 之間的差異。 JSR-352 提供三件事
- 用於建置批次元件的 API
- 用於配置批次元件的基於 XML 的 DSL
- 批次元件如何互動的合約
JSR-352 不提供批次元件的任何實作。 Spring Batch 提供了 17 個讀取器、16 個寫入器和無數其他實用程式和擴充功能,這些功能已在企業生產環境中經過多年的測試。 Spring Batch 提供了超出單個 JVM 的可擴展性選項。 最後,Spring Batch 通過 Spring for Apache Hadoop 專案和作為 Spring XD 的基石,提供了巨量資料支援。
要閱讀有關 Spring Batch 實作 JSR-352 的更多資訊,請造訪我們的參考文件:https://spring-docs.dev.org.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://spring-docs.dev.org.tw/spring-batch/trunk/reference/html/springBatchIntegration.html。
徹底檢修相依性
作為 Spring 系列產品組合中持續努力的一部分,Spring Batch 第三方相依性已更新。 這允許 Spring Batch 的使用者使用他們信任的最新和最好的程式庫以及 Spring Batch。
支援 SQLite
大多數整合測試案例都使用 HSQLDB 作為資料來源,因為它可以輕鬆建立記憶體內資料庫。 但是,有時一個簡單的單一檔案選項會更好。 因此,我們已將 SQLite 添加為 Spring Batch 儲存庫的支援資料庫。
Job scope (任務範圍)
Spring Batch 提供了兩個自訂 Bean 範圍。 第一個範圍,步驟範圍,已經存在多年,作為一種延遲 Bean 初始化直到執行 Bean 所使用的步驟的方式。 透過 Spring Batch 3.0,我們新增了一個任務範圍。 這將允許延遲初始化任務級別元件(例如 JobExecutionListeners),以及提供諸如任務參數注入到這些元件之類的功能。 您可以在參考手冊中閱讀有關任務範圍的更多資訊:https://spring-docs.dev.org.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 取得這些 jar 檔。
展望未來
隨著這個版本的發布,我們期待規劃和開發我們的 3.1 版本。3.1 版本將有兩個主要主題:簡化和支援 Spring XD 的工作。
在簡化方面,我們希望提高 Spring Batch 的易用性,使其可以被認為適用於較不「笨重」的流程。透過專注於此,開發者可以「發展」解決方案。很多時候,事情最初只是簡單的腳本,然後演變成企業需要依賴的關鍵任務功能。我們希望 Spring Batch 在腳本階段就被考慮採用,以便在該功能需要企業級解決方案時,它已經在那裡了。
除了核心的 Spring Batch 功能之外,Spring Batch 也是 Spring XD 的核心技術。我們將繼續擴展 Spring Batch 的功能,以透過 Spring XD 和 Spring for Apache Hadoop 支援大數據解決方案。
結論
3.0.0 代表 Spring Batch 下一個主要里程碑的完成。它將 JSR-352 提供的標準帶給我們的社群,並為進階使用者提供了詳盡的額外功能集合。我們期待您在論壇、社群媒體以及 SpringOne2GX 親自分享您的意見回饋!