批處理框架Spring Batch 4.1釋出了GA版

Spring Batch介紹

目前,Spring Batch是批處理框架界為數不多的優秀框架(Java語言開發),SpringSource和Accenture(埃森哲)共同貢獻了智慧。

批處理框架Spring Batch 4.1釋出了GA版

SpringBatch,作為一個 Spring 元件,透過使用 Spring 的依賴注入(Dependency Injection) 來提供處理批處理的功能。下圖是 Spring Batch 的架構體系。

批處理框架Spring Batch 4.1釋出了GA版

Spring batch框架有4個主要元件:JobLauncher、Job、Step和JobRepository。

1)JobLauncher(任務啟動器):透過它啟動任務,可以理解為程式的入口。

2)Job(任務):一個具體的任務。

3)Step(步驟):一個具體的執行步驟,一個Job中可以有多個Step。

4)JobRepository(任務倉庫):儲存資料的倉庫,在任務執行的時候,需要用它來記錄任務狀態資訊,可以看做是一個數據庫的介面。

Spring batch的使用場景

在使用Spring batch的過程中我們總結了一些最佳實踐,從而在實際開發中,能夠交付可維護的、高質量的批處理應用,滿足要求苛刻的企業級應用。Spring Batch合理化地抽象了批處理場景,對大量的使用功能就進行了封裝,使用Spring Batch讓批處理程式的開發顯得事半功倍,這就是許多大型企業中選擇它的原因,批處理應用資料量大、資料格式不統一、業務型別複雜且資料互動格式繁瑣,不是所有操作都能透過互動介面進行處理。部分操作需要程式定期讀取大批次的資料,從而進行大量的後續處理工作。

批處理的典型應用場景是對賬,各種跨主機系統的業務、各種金融機構的往來資料分析業務等等都會涉及賬目核對的過程,比如POS機業務、現金業務、銀聯交易、ATM機業務、證券賬戶業務、大小額支付業務等等。

批處理框架Spring Batch 4.1釋出了GA版

這種業務流程就是“批處理”業務。批處理業務通常有以下特點:

1)資料量大,資料格式不統一,業務型別複雜且資料互動格式繁瑣;

2)應用的整個過程都是需要自動化進行的,而且還需要預設一些介面進行配置管理;

3)批處理應用需要處理的資料或者應用需要常規執行,也就是按照每天、每週、每月的執行方式;

4)雖然是批次處理,但是應用對資料處理的結果的精準要求非常高,由於系統是不停的執行的,所以需要支援完善的容錯機制和失誤回滾機制。

Spring Batch 4。1 GA新特性

其實在Spring Batch4。1GA之前,Spring Batch就可以和Spring Boot整合開發。Spring Batch 4。1 GA 在框架效能、資料處理支援等方面給出了很多新特性,具體如下:

批處理框架Spring Batch 4.1釋出了GA版

1)增加@SpringBatchTest 註解,用於簡化測試批處理元件

SpringBatch提供了一些不錯的實用程式類(如JoBaununCeleTestStudis)。JobRepositoryTestUtils)以及測試執行偵聽器和JobScopeTestExecutionListener)測試批處理元件。然而,按順序要使用這些實用工具,必須顯式配置它們。4。1GA版本介紹一個新的註釋名為@ SpringBatchTest,它自動新增實用程式bean和偵聽到測試上下文並使它們可以用於自動生成,如下面的示例所示:

批處理框架Spring Batch 4.1釋出了GA版

2)增 @EnableBatchIntegration 註解,用於簡化遠端分塊和分割槽配置

設定遠端組塊工作需要定義多個bean:

- 從訊息中介軟體(JMS、AMQP等)獲取連線的連線工廠;

- 一個訊息傳送模板,從主機發送請求給workers ,然後再返回;

- Spring整合的輸入通道和輸出通道以從訊息中介軟體獲取訊息;

- 主端上的特殊項寫入器(ChunkMessageChannelItemWriter),它知道如何將資料塊傳送給工人進行處理和寫入;

- 在工作側接收訊息的監聽器(CurkPrimeStudiunkHANDER)。

乍一看,這可能有點嚇人。這個版本引入了一個新的註釋名為@EnabBeBeTeChigTeGrand以及新的API(RemoteChunkingMasterStepBuilder和RemoteChunkingWorkerBuilder),以簡化配置。下面的示例演示如何使用新的註釋和API:

批處理框架Spring Batch 4.1釋出了GA版

這種新的註釋和新的建設者關心配置基礎設施bean的繁重。現在,您可以輕鬆地配置一個主步驟以及一個在工作側的Spring整合流。就像遠端分塊配置簡化一樣,這個版本還引入了新的API來簡化遠端分割槽設定:Remote。tioningMasterStepBuilder和Remote。tioning。rStepBuilder。如果在下面的示例中顯示了@ eNabLabTimeChutsGrand,則可以在配置類中自動呼叫:

批處理框架Spring Batch 4.1釋出了GA版

3)支援以 JSON 格式讀寫資料

此版本引入了一個新的專案讀取器(JSONITEMeReader),它可以讀取以下格式的JSON資源:

批處理框架Spring Batch 4.1釋出了GA版

和StaxEventItemReader XML相似,新的JsonItemReader類使用streaming APIs以塊的方式操作JSON objects,Spring Batch支援兩個庫:Jackson和Gson。若要新增其他實現,可以實現JSONObjeTreDead介面。JSON檔案的編寫也支援JSON資料。

4)支援使用 Bean Validation API 進行條目驗證

GA版本帶來了一個新的ValidatingItemProcessor實現,稱為BeanValidatingItemProcessor,它允許您驗證用Bean Validation API(JSR-303)註釋註釋的專案。例如,考慮以下Person型別:

批處理框架Spring Batch 4.1釋出了GA版

可以透過在應用程式上下文中宣告BeanValidatingItemProcessor bean來驗證項,並在面向塊的步驟中將其註冊為處理器,如下面的示例所示:

批處理框架Spring Batch 4.1釋出了GA版

5)支援 JSR-305 註解

GA版本增加了對JSR305註釋的支援。它使用Spring框架Null-safety註釋,並將它們新增到Spring批次的所有公共API上。這些註釋不僅在使用SpringBatchAPI時強制執行空安全性,而且IDE可以使用它們來提供與空性有關的有用資訊。例如,如果使用者想要實現ItemReader介面,任何支援JSR-305註釋的IDE都應該生成類似於以下內容的內容:

批處理框架Spring Batch 4.1釋出了GA版

在讀取方法中出現的@Nullable註釋清楚地表明,該方法可能返回null。這增強了JavaDoc中所說的:當資料來源用完時,讀取方法應該返回null。

6)增強了針對 FlatFileItemWriterBuilder API 的功能

在本版本中新增的另一個小特性是簡化了平面檔案寫入的配置。具體地說,這些更新簡化了定界和固定寬度檔案的配置。下面的示例顯示了更改前後的內容。

批處理框架Spring Batch 4.1釋出了GA版