スキップに関して非常に基本的な質問があります。春のサンプルが提供する spring-batch-simple-cli プロジェクトを使用して、スキップ動作を理解しようとしています。これには、文字列の配列から読み取る非常に基本的なサンプル リーダー (Helloworld 1 から Hellowworld 10 までの 10 個の文字列のリストから読み取るように変更しました) と、コンソールにログを記録する基本的なライターがあります。ライターは、書き込みごとに java.lang.Exception をスローします。ジョブ構成に 4 のスキップ制限を追加しました。Hellowworld 5 に到達すると、期待どおりにジョブが停止します。ただし、ライターが例外をスローするたびに、ライターは同じアイテムですぐにコールバックされます。私の質問は、なぜライターが 2 回呼び出されるのですか? 私はこのアイテムがちょうどスキップされることを期待していますか? 私が欠けているものはありますか?
<job id="job1" xmlns="http://www.springframework.org/schema/batch" incrementer="jobParametersIncrementer">
<step id="step1" parent="simpleStep">
<tasklet>
<chunk reader="reader" writer="writer" skip-limit="4" >
<skippable-exception-classes>
<include class="java.lang.Exception" />
</skippable-exception-classes>
</chunk>
</tasklet>
</step>
</job>