SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

在Spring Batch 4.1 裡面,增加了這些內容:

  • 增加了一個註解@SpringBatchTest,用於更方便的測試batch組件
  • 增加了一個註解@EnableBatchIntegration,用於簡化遠程分塊和遠程分區的配置
  • 新的 JsonItemReader 和 JsonFileItemWriter 支持JSON格式
  • 支持通過對象驗證API 來驗證items
  • 支持JSP-305 註解
  • 增強FlatFileItemWriterBuilder 類

@SpringBatchTest 註解

Spring Batch提供了一些不錯的實用工具類(例如JobLauncherTestUtils和JobRepositoryTestUtils)以及測試執行偵聽器(StepScopeTestExecutionListener和JobScopeTestExecutionListener)來測試批處理。但是,要使用這些工具類,必須顯式配置它們。此版本引入了一個名為@SpringBatchTest的新註釋,它自動將這些工具類和偵聽器添加到測試上下文中,並使它們可用於自動裝配,如以下示例所示:

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

@EnableBatchIntegration 註解

對於之前版本,定義一個遠程分塊,需要定義一下Bean:

  • 從消息傳遞中間件(JMS,AMQP和其他)獲取連接的連接工廠
  • MessagingTemplate將Master請求發送給 Worker 並再次返回
  • Spring Integration的輸入通道和輸出通道,用於從消息傳遞中間件獲取消息
  • 一個可以從Master發送chunk 數據到Workers端的ItemWriter( ChunkMessageChannelItemWriter ),以便Workers可以執行這些數據
  • 一個可以接受Master 發來數據的消息監聽器( ChunkProcessorChunkHandler )

乍一看這可能有點令人生畏。此版本引入了名為 @EnableBatchIntegration 的新註釋以及API( RemoteChunkingMasterStepBuilder 和 RemoteChunkingWorkerBuilder )以簡化配置。

具體配置如下:

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

這個新的註釋和構建器負責配置基礎架構bean的繁重工作。您現在可以在工作方輕鬆配置主步驟和Spring Integration流程。

就像遠程分塊配置簡化一樣,此版本還引入了新的API來簡化遠程分區設置: RemotePartitioningMasterStepBuilder 和 RemotePartitioningWorkerStepBuilder 。如果存在 @EnableBatchIntegration ,則可以在配置類中自動裝配這些,如以下示例所示:

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

JSON 支持

Spring Batch 4.1增加了對JSON格式的支持。此版本引入了一個新的項目閱讀器,可以按以下格式讀取JSON資源:

與 StaxEventItemReader for XML類似,新的 JsonItemReader 使用流API來讀取塊中的JSON對象。 Spring Batch支持兩個庫:

  • Jackson
  • Gson
  • 要添加其他庫,可以實現 JsonObjectReader 接口。通過 JsonFileItemWriter 也支持編寫JSON數據。

Bean驗證API支持

此版本帶來了一個名為 BeanValidatingItemProcessor 的新_20112實現,它允許您驗證使用Bean Validation API(JSR-303)註釋註釋的項目。例如,給定以下類型 Person

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

您可以通過在應用程序上下文中聲明 BeanValidatingItemProcessor bean來驗證項目,並在面向塊的步驟中將其註冊為處理器:

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

JSR-305支持

此版本增加了對JSR-305註釋的支持。它利用Spring Framework的 Null-safety 註釋,並將它們添加到Spring Batch的所有公共API上。

這些註釋不僅在使用Spring Batch API時強制執行null安全性,而且還可以由IDE用於提供與可空性相關的有用信息。例如,如果用戶想要實現 ItemReader 接口,則任何支持JSR-305註釋的IDE都將生成如下內容:

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性

read 方法上出現的 @Nullable 註釋清楚地表明該方法的 Contract 表明它可能返回 null 。這強制執行其Javadoc中的內容, read 方法應該在數據源耗盡時返回 null 。

FlatFileItemWriterBuilder增強功能

此版本中添加的另一個小功能是簡化了寫入平面文件的配置。具體來說,這些更新簡化了分隔和固定寬度文件的配置。以下是更改之前和之後的示例。

SpringBatch從入門到放棄012- Spring Batch 4.X 新特性


分享到:


相關文章: