Spring Batch 5.1.0-M1 現已釋出!

版本釋出 | Mahmoud Ben Hassine | 2023年7月19日 | ...

我代表團隊以及所有貢獻者,高興地宣佈 Spring Batch 5.1 的第一個里程碑版本現已在我們的里程碑倉庫中提供。

此里程碑版本包含以下特性

  • 依賴項升級
  • 虛擬執行緒支援
  • JpaItemWriter 中的記憶體管理改進
  • 新的用於 item readers 和 writers 的同步裝飾器

這篇部落格文章將更詳細地介紹這些特性。有關更改的完整列表,請檢視釋出說明

依賴項升級

此里程碑版本將 Spring 依賴項升級到以下版本

  • Spring Framework 6.1.0-M2
  • Spring Integration 6.2.0-M1
  • Spring Data 3.2.0-M1
  • Spring LDAP 3.2.0-M1
  • Micrometer 1.12.0-M1

虛擬執行緒支援

擁抱 JDK 21 LTS 是 Spring Batch 5.1 的主要主題之一,尤其是對 Project Loom 虛擬執行緒的支援。在此版本中,框架的所有領域都可以使用虛擬執行緒,例如使用虛擬執行緒執行併發步驟或使用虛擬執行緒並行啟動多個步驟。

得益於 Spring Batch 精心設計的關注點分離,執行緒並非直接管理。執行緒管理被委託給 Spring Framework 中的 TaskExecutor 實現。這種面向介面的程式設計方法使您能夠透明且靈活地切換不同的 TaskExecutor 實現。

在 Spring Framework 6.1 中,引入了一種新的基於虛擬執行緒的 TaskExecutor 實現,即 VirtualThreadTaskExecutor。無論 Spring Batch 何處需要 TaskExecutor,都可以使用此 TaskExecutor。以下示例展示瞭如何使用虛擬執行緒配置多執行緒步驟

@Bean
public VirtualThreadTaskExecutor taskExecutor() {
	return new VirtualThreadTaskExecutor("spring-batch-");
}

@Bean
public Step step(JobRepository jobRepository, PlatformTransactionManager transactionManager,
				 ItemReader<Integer> itemReader, ItemWriter<Integer> itemWriter,
				 VirtualThreadTaskExecutor taskExecutor) {
	return new StepBuilder("step", jobRepository).<Integer, Integer>chunk(2, transactionManager)
		.reader(itemReader)
		.writer(itemWriter)
		.taskExecutor(taskExecutor)
		.build();
}

JpaItemWriter 中的記憶體管理改進

使用 JpaItemWriter 時,如果塊大小足夠大,JPA 持久化上下文可能會快速增長。如果未能及時適當地清除,這可能會導致 OutOfMemoryError 錯誤。

在此里程碑版本中,JpaItemWriter 中引入了一個名為 clearPersistenceContext 的新選項,用於在寫入每塊專案後清除持久化上下文。此選項改進了處理大量資料並配置了較大塊大小的塊導向型步驟的記憶體管理。

新的用於 item readers 和 writers 的同步裝飾器

在 5.0 版本之前,Spring Batch 提供了兩個裝飾器 SynchronizedItemStreamReaderSynchronizedItemStreamWriter 來同步執行緒對 ItemStreamReader#readItemStreamWriter#write 的訪問。這些裝飾器在使用非執行緒安全的 item streams 進行多執行緒步驟時非常有用。

雖然這些裝飾器適用於 ItemStream 實現,但它們不適用於非 item streams。例如,這些裝飾器不能用於同步對 ListItemReader#readKafkaItemWriter#write 的訪問。

為了方便使用者,此版本也為非 item streams 引入了新的裝飾器。藉助此新特性,現在可以同步 Spring Batch 中的所有 item readers 和 writers,而無需編寫自定義裝飾器。

下一步是什麼?

首先,我要感謝所有為此版本做出貢獻的貢獻者!您可以將 Spring Batch 5.1.0-M1 與 Spring Boot 3.2.0-M1 一起試用。我們計劃在 2023 年 11 月下旬釋出 Spring Batch 5.1 GA。

我們期待您在 Github IssuesGithub DiscussionsTwitterStackOverflow 上提供反饋意見。

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

訂閱 Spring 時事通訊

訂閱 Spring 時事通訊,保持聯絡

訂閱

搶先一步

VMware 提供培訓和認證,助您快速進步。

瞭解更多

獲取支援

Tanzu Spring 透過一項簡單的訂閱,即可提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將到來的活動

檢視 Spring 社群所有即將到來的活動。

檢視全部