領先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多我很高興地宣布 Spring Batch 5.0.0-M5
現在可以從我們的 里程碑儲存庫取得。 這個里程碑的主要主題是改善 Spring Batch 中的測試支援。 這篇文章將介紹此領域的主要變更,以及在此里程碑版本中引入的其他變更。 有關完整的變更列表,請參閱 發布說明。
在 4.3 版之前,JobLauncherTestUtils
用於自動注入受測任務,以方便測試設定。 但是如果在測試上下文中定義了多個任務怎麼辦? 如果根本沒有定義 Job
Bean 怎麼辦? 因此,雖然這種自動注入在大多數情況下都很方便,但事實證明它在上述情況下會導致一些問題。 在這個版本中,根據社群的回饋,我們決定移除 JobLauncherTestUtils
中任何任務的自動注入。
同樣地,JobRepositoryTestUtils
用於從應用程式上下文中自動注入 DataSource
。 再說一次,如果在測試上下文中沒有定義資料來源或定義了多個資料來源怎麼辦? 在這個版本中,JobRepositoryTestUtils
已更新為針對 JobRepository
介面運作,而無需處理儲存庫的任何實作細節(例如資料來源)。
如果您在測試上下文中手動定義這些工具 Bean,或透過 @SpringBatchTest
匯入它們,則當測試上下文中定義了多個這些類型的 Bean 時,您需要手動設定受測任務或測試資料來源。
在這個里程碑版本中,Spring Batch 的整個測試套件已遷移至 JUnit 5。 雖然這不會直接影響最終使用者,但它有助於 Batch 團隊以及社群貢獻者使用下一代的 JUnit 來編寫更好的測試。
在這個里程碑版本中,說明文件已更新為使用 Spring Asciidoctor Backend。 這個後端可確保作品組合中的所有專案都遵循相同的說明文件樣式。 為了與其他專案保持一致,Spring Batch 的參考說明文件已更新為在這個版本中使用這個後端。 您可以在 此處查看參考說明文件的新版本。
此版本包含許多棄用和 API 變更。
這個里程碑版本引入了以下棄用
org.springframework.batch.test.AssertFile
工具類別已被棄用,建議改用現代測試程式庫提供的類似工具。在這個版本中,我們在 ItemWriter
介面中引入了一項重大變更
public interface ItemWriter<T> {
-- void write(List<? extends T> items) throws Exception;
++ void write(Chunk<? extends T> items) throws Exception;
}
雖然這個變更看起來很小,但我們相信它在更好的封裝和在框架的不同領域和 API 中使用連貫的語言方面具有巨大的附加價值。 ItemWriteListener
API 也已變更為使用 Chunk
API。
由於 Chunk
API 實作了 java.lang.Iterable
,因此這個變更不會影響任何迭代項目清單的用戶端程式碼。 此外,這個變更不會影響任何使用 Lambda 運算式定義 ItemWriter
的範例,因為項目的類型是推斷出來的。 有關已變更的 API 的所有詳細資訊,請參閱 遷移指南。
主要相依性已升級至以下版本
我們要感謝所有對此版本做出貢獻的貢獻者! 當我們繼續在 Spring Batch 5 上工作時,我們期待您在 Github、Twitter 和 StackOverflow 上提供您的意見回饋。