我有一個具有以下配置的 Spring Batch 閱讀器。該閱讀器正在從資料庫中讀取資料,并且一次讀取頁面大小的記錄。
@Autowired
private SomeCreditRepot someCreditRepo;
public RepositoryItemReader<SomeCreditModel> reader() {
RepositoryItemReader<SomeCreditModel> reader = new RepositoryItemReader<>();
reader.setRepository(someCreditRepo);
reader.setMethodName("someCreditTransfer");
.
.
..
return reader;
}
我想呼叫 utils 方法,
refValue = BatchProcessingUtil.generateSomeRefValue();
在處理器步驟之前,以便讀取器獲取的所有記錄都將具有上述呼叫給出的相同值集。
這樣閱讀器獲取的所有物體都將在處理器中獲得相同的值。
然后這個 refValue 將被寫入另一個表 StoreRefValue(table)。
在 Spring Batch 中執行此操作的正確方法是什么?我應該觸發查詢以將 refValue 寫入處理器中的 StoreRefValue 表嗎?
uj5u.com熱心網友回復:
你可以讓你的處理器實作介面StepExecutionListener。然后,您必須實作方法afterStep和beforeStep. 第一個應該簡單地 return null,并且beforeStep您可以呼叫實用程式方法并保存其回傳值。
或者,您可以使用注釋@BeforeStep。如果您使用通常的 Java DSL,則不需要將處理器作為偵聽器顯式添加到步驟中。將其添加為處理器就足夠了。
參考檔案中有更多詳細資訊: https ://docs.spring.io/spring-batch/docs/current/reference/html/step.html#interceptingStepExecution
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/440036.html
標籤:春天 弹簧批 弹簧批处理管理员 spring-batch-tasklet 弹簧批处理流
