簡體   English   中英

在 ItemProcessor 中實現多個業務邏輯的最佳方法

[英]Best way to implement multiple business logic in ItemProcessor

我只使用了一個使用面向塊的處理(ItemReader,ItemProcessor,ItemWriter)的步驟,從文件中讀取數據,處理數據(有許多業務邏輯背后的條件)和最后一步是寫入數據進入數據庫。

我發現有點棘手的部分是處理器部分,我無法真正添加條件流,因為我既不使用復合處理器也使用塊處理,因為處理某些流需要滿足條件(在對數據進行多次檢查之后 -有時會導致直接數據返回)。

有沒有更好的方法來實現具有許多條件和檢查的所有這些業務邏輯,或者在特定條件下使用 spring 批處理中的塊處理來調用另一個 ItemProcessor 中的 ItemProcessor 的方法?

謝謝

沒有最好的方法。 這取決於用例。 所以我會盡量提供一些指導。

面向塊的處理 model 設計為具有具有以下合同的單個項目處理器:給定輸入項目,項目處理器可以具有以下結果之一:

  • 返回相同的項目(或轉換后的項目):在這種情況下,項目將被傳遞給作者
  • 返回null :在這種情況下,項目將被過濾(即不傳遞給編寫器)
  • 拋出異常:在這種情況下,如果是簡單的面向塊的步驟,則該步驟將失敗,或者如果該步驟是面向塊的容錯步驟,則將根據重試/跳過策略重試/跳過該項目。

現在,如何在項目處理器中實現邏輯取決於您。 例如,您可以:

  • 將多個項目處理器組合成一個(如 Spring Batch 提供的CompositeItemProcessor
  • 將處理委托給其他項目處理者
  • 調整現有的 class 以充當項目處理器(如 Spring Batch 提供的ItemProcessorAdapterFunctionItemProcessor
  • ETC

有幾個用例可以使用項目處理器實現,如數據轉換、過濾、驗證等。您可以在參考文檔的項目處理部分找到更多詳細信息。

您真正需要明確定義的是整個驗證過程(作為黑匣子)的結果是什么,無論它多么復雜,然后才選擇在您的情況下實現它的最佳模式(注意我怎么說“在你的情況下最好”,因為沒有絕對最好的方法)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM