簡體   English   中英

spring batch:沒有ItemWriter的Tasklet

[英]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.

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