遙遙領先
VMware 提供培訓和認證,以加速您的進步。
瞭解更多我很高興代表團隊和所有貢獻者宣佈 Spring Batch 5.0.0-M7
現在可以從我們的 里程碑儲存庫 中獲得。
此里程碑的主要主題是改進 Spring Batch 中的作業引數處理。 此版本中引入了兩個主要更改
這篇部落格文章詳細介紹了這兩個主要變化。 有關更改的完整列表,請檢視發行說明。
在 4.x 版本之前,Spring Batch 僅支援 4 種可以作為作業引數使用的型別,即 long
、double
、String
和 Date
。 雖然這對於簡化框架端的作業引數處理很方便,但事實證明這對使用者端造成了限制。 例如,如果有人想使用 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 Application Properties 的啟發,其指定如下
parameterName='{"value": "parameterValue", "type":"parameterType", "identifying": "booleanValue"}'
其中 parameterType
是引數型別的完全限定名稱。 Spring Batch 提供了 JsonJobParametersConverter
來支援這種表示法。 當然,可以透過實現策略介面 JobParametersConverter
並在作業儲存庫和作業瀏覽器中註冊自定義實現來支援任何其他表示法。
我們相信 Spring Batch 中作業引數處理的這兩個主要更改更加方便、更靈活且不易出錯。
我要感謝所有在此版本中發揮作用的貢獻者! 在我們繼續進行 Spring Batch 5 的工作時,我們期待您在 Github、Twitter 和 StackOverflow 上的反饋。