Spring Batch 5.1.0-M1 現已推出!

發佈 | Mahmoud Ben Hassine | 2023 年 7 月 19 日 | ...

我謹代表團隊和所有貢獻者,很高興宣布 Spring Batch 5.1 的第一個里程碑版本現已可從我們的 里程碑儲存庫 取得。

此里程碑版本包含以下功能

  • 相依性升級
  • 虛擬線程支援
  • JpaItemWriter 中的記憶體管理改進
  • 用於項目讀取器和寫入器的新同步裝飾器

這篇部落格文章更詳細地介紹了這些功能。如需完整的變更列表,請查看發行說明

相依性升級

此里程碑版本將 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。此 TaskExecutor 可在 Spring Batch 中任何需要 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 的新選項,用於在寫入每個項目區塊後清除持續性上下文。此選項改進了處理大量資料並配置了較大區塊大小的區塊導向步驟的記憶體管理。

用於項目讀取器和寫入器的新同步裝飾器

在 5.0 版之前,Spring Batch 提供了兩個裝飾器 SynchronizedItemStreamReaderSynchronizedItemStreamWriter,用於同步線程對 ItemStreamReader#readItemStreamWriter#write 的訪問。當在多線程步驟中使用非線程安全的項目流時,這些裝飾器非常有用。

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

為了使用者的方便,此版本也為非項目流引入了新的裝飾器。透過這項新功能,Spring Batch 中的所有項目讀取器和寫入器現在都可以同步,而無需編寫自訂裝飾器。

下一步是什麼?

首先,我要感謝所有在此版本中做出貢獻的貢獻者!您可以試用 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 社群中所有即將到來的活動。

查看全部