ItemReader は処理対象となるオブジェクトを取得する。
実装した、 T read() メソッドがnullを返すまで処理は繰り替えされる。
なので処理としては以下の様になる。
- ItemReader でレコードを読み込む
- ItemProcessor で何らかの処理
- ItemWriter で結果の書き込み。この時再び ItemReader で読み込まれないようにフラグ等をセット
もしくは、処理失敗時の考慮なども必要だが、以下のようにしてもよい。
- 初回起動時の ItemReader で全ての対象レコードを読み取る。戻り値は、処理対象のレコードのみ
- ItemProcessor で何らかの処理
- ItemWriter で何らかの書き込み処理
上記の場合、 ItemReader は状態を保存しておく必要がある。
ItemReader のbean定義に、scope=”step” のようにするとステップ単位でインスタンスが生成される。
scope=”step” にしておけば ItemReader が null を返すまでインスタンス変数は保持される。
1 |
<bean id="xxxxxxx" class="yy.XXXXXX" scope="step"/> |