Spring Batch 5.0.0-M7 現已推出!

發佈 | Mahmoud Ben Hassine | 2022 年 10 月 05 日 | ...

謹代表團隊和所有貢獻者,我很高興地宣布 Spring Batch 5.0.0-M7 現在可以從我們的 里程碑儲存庫取得。

這個里程碑的主要主題是改善 Spring Batch 中任務參數的處理。此版本引入了兩個主要變更

  • 新增支援使用任何類型作為任務參數
  • 改善任務參數轉換

這篇部落格文章將詳細介紹這兩個主要變更。如需完整的變更清單,請查看發佈說明

新增支援使用任何類型作為任務參數

在 4.x 版本之前,Spring Batch 僅支援 4 種可以作為任務參數使用的類型,分別是 longdoubleStringDate。雖然這方便簡化了框架端的任務參數處理,但最終卻限制了使用者端。例如,如果有人想要使用 boolean 或自訂類型作為任務參數該怎麼辦?這需要額外轉換為 Spring Batch 中支援的類型之一,這很快就讓使用者感到不便。

在這個版本中,我們新增了支援使用任何類型作為任務參數。此改善背後的主要變更是以下內容

---public class JobParameter implements Serializable {
+++public class JobParameter<T> implements Serializable {

---   private Object parameter;
+++   private T value;

---   private ParameterType parameterType;
+++   private Class<T> type;

}

此變更會影響任務參數在資料庫中的持續性。請查看遷移指南以瞭解資料庫結構描述變更。參數類型的完整名稱現在以 String 形式持續保存,參數值也是如此。字串文字會使用標準 Spring 轉換服務轉換為參數類型。可以使用任何必要的轉換器來擴充標準轉換服務,以將使用者特定類型轉換為字串文字,以及從字串文字轉換。

改善任務參數轉換

v4 中任務參數的預設表示法指定如下

[+|-]parameterName(parameterType)=parameterValue

其中 parameterType[string,long,double,date] 其中之一。雖然這種表示法簡潔,但它顯示出一些限制,因為它與環境變數配合不佳,並且對 Spring Boot 不友善。

在 v5 中,我們已將預設表示法變更如下

parameterName=parameterValue,parameterType,identificationFlag

其中 parameterType 是參數類型的完整名稱。例如,以下鍵/值組

schedule.date=2022-12-12,java.time.LocalDate

將轉換為類型為 java.time.LocalDate 且值為 2022-12-12 的識別任務參數。請注意,識別旗標是選擇性的,預設為 true。這種新的預設表示法非常適合大多數使用案例,但當值包含逗號時可能不方便。因此,我們引入了一種新的「擴充」表示法,其靈感來自 Spring Boot 的 Json 應用程式屬性,其指定如下

parameterName='{"value": "parameterValue", "type":"parameterType", "identifying": "booleanValue"}'

其中 parameterType 是參數類型的完整名稱。Spring Batch 提供 JsonJobParametersConverter 以支援此表示法。當然,可以透過實作策略介面 JobParametersConverter 並在任務儲存庫和任務瀏覽器中註冊自訂實作來支援任何其他表示法。

我們相信 Spring Batch 中這兩個主要的任務參數處理變更更加方便、更具彈性且更不易出錯。

意見回饋

我要感謝所有在此版本中扮演角色的貢獻者!當我們繼續在 Spring Batch 5 上努力時,我們期待您在 GithubTwitterStackOverflow 上的意見回饋。


Spring Batch 首頁|Github 上的原始碼|參考文件

取得 Spring 電子報

透過 Spring 電子報保持聯繫

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進展。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部