[Spring Batch] java.lang.IllegalStateException: If a skip limit is provided then skippable exceptions must also be specified というエラー

以下のようなエラー。そのまま指示通りに従えばOK。

chunkskip-limit を付け加えたらどのような例外時にスキップするか指定する必要がある。 以下の例は、java.lang.Exception を継承する例外全てスキップ対象とする




[Spring Batch] (備忘録) ItemReader の動作

ItemReader は処理対象となるオブジェクトを取得する。
実装した、 T read() メソッドがnullを返すまで処理は繰り替えされる。
なので処理としては以下の様になる。

  1. ItemReader でレコードを読み込む
  2. ItemProcessor で何らかの処理
  3. ItemWriter で結果の書き込み。この時再び ItemReader で読み込まれないようにフラグ等をセット

もしくは、処理失敗時の考慮なども必要だが、以下のようにしてもよい。

  1. 初回起動時の ItemReader で全ての対象レコードを読み取る。戻り値は、処理対象のレコードのみ
  2. ItemProcessor で何らかの処理
  3. ItemWriter で何らかの書き込み処理

上記の場合、 ItemReader は状態を保存しておく必要がある。
ItemReader のbean定義に、scope=”step” のようにするとステップ単位でインスタンスが生成される。
scope=”step” にしておけば ItemReader が null を返すまでインスタンス変数は保持される。