3

次のように ItemWriter なしでタスクレットを定義しました。

<b:tasklet>
    <b:chunk reader="baseReader" processor="baseProcessor"  commit-interval="100" />
</b:tasklet>

そして、私はこのエラーを受け取りました:

構成の問題:<b:chunk/>要素に「ライター」属性も<writer/>要素もありません。

何か考えはありますか?ありがとう

4

2 に答える 2

6

さて、チャンクでは、リーダーとライターは必須です! ただし、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。インライン ( 内で定義されたもの) の場合、それは要素の属性です。スタンドアロン ステップの場合、 の属性として定義されます。

commit-interval - トランザクションがコミットされる前に処理されるアイテムの数。

job-repository のデフォルトは「jobRepository」、transaction-manager のデフォルトは「transactionManger」であることに注意してください。さらに、アイテムはリーダーからライターに直接渡すことができるため、ItemProcessor は必須ではなくオプションです。

于 2013-06-19T15:56:57.667 に答える
4

ライターなし (リーダー + プロセッサのみ) のチャンクを定義できます。チャンクを含むライターステップを渡すには、次のように抽象ステップの親を継承する必要があるようです:

    <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>

問題は解決しました、ありがとう!

于 2013-06-21T15:00:43.640 に答える