[英]spring batch : Tasklet without ItemWriter
我在沒有ItemWriter的情況下定義了我的tasklet,如下所示:
<b:tasklet>
<b:chunk reader="baseReader" processor="baseProcessor" commit-interval="100" />
</b:tasklet>
我收到了這個錯誤:
配置問題: <b:chunk/>
元素既沒有'writer'屬性也沒有<writer/>
元素。
你有什么主意嗎 ? 謝謝
嗯,在一大塊,一個讀者和一個作家是強制性的! 但是,ItemProcessor是可選的。
這來自官方文件:
5.1.1。 配置步驟
盡管Step的必需依賴項列表相對較短,但它是一個非常復雜的類,可能包含許多協作者。 為了簡化配置,可以使用Spring Batch命名空間:
<job id="sampleJob" job-repository="jobRepository">
<step id="step1">
<tasklet transaction-manager="transactionManager">
<chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
</tasklet>
</step>
上面的配置表示創建面向項目的步驟所需的唯一依賴項:
reader - 提供處理項目的ItemReader。
writer - 處理ItemReader提供的項目的ItemWriter。
transaction-manager - Spring的PlatformTransactionManager,用於在處理過程中開始和提交事務。
job-repository - 將在處理期間(就在提交之前)定期存儲StepExecution和ExecutionContext的JobRepository。 對於內聯(在a中定義的內容),它是元素的屬性; 對於獨立步驟,它被定義為的屬性。
commit-interval - 提交事務之前將處理的項目數。
應該注意的是,job-repository默認為“jobRepository”,而transaction-manager默認為“transactionManger”。 此外,ItemProcessor是可選的,不是必需的,因為該項可以直接從閱讀器傳遞給編寫器。
我們可以定義一個沒有編寫器的塊(只是一個讀取器+處理器),我設法這樣做。 似乎為了傳遞包含塊的編寫器步驟必須繼承抽象步驟父類,如下所示:
<b:step id="task" parent="Task">
<b:tasklet>
<b:chunk reader="baseReader" processor="baseProcessor" commit- interval="100" />
</b:tasklet>
</b:step>
<b:job id="batch" parent="Batch">
<b:step id="etape" parent="task" />
</b:job>
問題解決了,謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.