取得領先
VMware 提供培訓和認證,以加速您的進展。
瞭解更多我謹代表 Spring Batch 團隊宣布 Spring Batch 4.3.0-M1 現在可以從我們的 milestone repository 取得。
此版本包含新功能、效能改進、錯誤修正,以及文件和相依性更新!您可以在 發布說明中找到完整的變更清單,以下是主要亮點
ItemStreamWriter
與 SynchronizedItemStreamReader
類似,我們新增了 SynchronizedItemStreamWriter
。此功能在多執行緒步驟中非常有用,在這些步驟中,並行執行緒需要同步,以避免覆寫彼此的寫入。
JpaPagingItemReader
中新增對命名查詢的支援到目前為止,可以使用 JpaPagingItemReader
使用命名查詢。但是,這需要建立自訂查詢提供者,如下所示
JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>()
.name("fooReader")
.queryProvider(new AbstractJpaQueryProvider() {
@Override
public Query createQuery() {
return getEntityManager().createNamedQuery("allFoos", Foo.class);
}
@Override
public void afterPropertiesSet() throws Exception {
}
})
// set other properties on the reader
.build();
在此版本中,我們引入了 JpaNamedQueryProvider
以及 JpaNativeQueryProvider
,以簡化配置,現在可以這樣編寫
JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>()
.name("fooReader")
.queryProvider(new JpaNamedQueryProvider("allFoos", Foo.class))
// set other properties on the reader
.build();
與許多 Spring Boot 測試註釋都使用 @ExtendWith(SpringExtension.class)
(例如 @SpringBootTest
、@WebMvcTest
等) 進行元註釋類似,我們更新了 @SpringBatchTest
以使用 @ExtendWith(SpringExtension.class)
進行元註釋。這簡化了使用 JUnit Jupiter 編寫測試時的配置。
請注意,此功能不影響 JUnit 4 使用者,它僅與基於 JUnit 5 的測試相關。
沿著我們在 版本 4.2 中引入的效能改進,我們也繼續努力改進此版本中框架的幾個部分。
RepositoryItemWriter
中使用批次寫入在 4.2 版之前,需要指定用於將項目儲存到資料庫的方法名稱。然後在 for
迴圈中呼叫此方法以儲存所有項目。為了使用 CrudRepository#saveAll
,需要擴充 RepositoryItemWriter
並覆寫 write(List)
,這很不方便。
在此版本中,我們預設讓 RepositoryItemWriter
使用 CrudRepository#saveAll
。根據我們的基準測試 repository-item-writer-benchmark,此變更將寫入器的效能提高了 2 倍
MongoItemWriter
中使用批次寫入到目前為止,MongoItemWriter
在 for
迴圈中使用 MongoOperations#save()
將項目儲存到資料庫。在此版本中,我們用對 BulkOperations
的單一呼叫取代了此機制。根據我們的基準測試 mongo-item-writer-benchmark,進行此變更後,MongotItemWriter
比以前的版本快 25 倍
在啟動新的 Job (或重新啟動失敗的 Job) 時,Spring Batch 會執行許多檢查以驗證一些條件
所有這些檢查都涉及呼叫 JobRepository.getStepExecutionCount
以計算步驟執行的次數。在 v4.2 之前,此方法的實作載入所有 Job 執行和步驟執行,以在框架端進行記憶體中的計數。在此版本中,我們已將實作變更為對資料庫進行單一呼叫並使用 count
查詢。此變更改善了記憶體使用率以及方法的響應時間 (根據我們的基準測試 step-execution-count-benchmark 提高了 6 倍),進而改善了步驟和 Job 的整體啟動時間
此版本將 Spring 專案相依性升級到以下版本
Spring Batch v4.3.0-M1 可以與 Spring Boot 2.4.0-M1 一起使用,預計下週發布。敬請關注!
我要感謝所有貢獻者,特別是 Parikshit Dutta,他為這個版本做出了許多貢獻! 我們期待您在 Twitter、StackOverflow 或 Github 上針對此里程碑提供意見回饋。
所有基準測試均在配備 16Go RAM、2.9 GHz Intel Core i7 CPU、MacOS Catalina 10.15.5 和 Oracle JDK 1.8.0_201 的 Macbook Pro 上執行。 您可以在以下連結中找到所有基準測試的原始碼