私が達成しようとしているのは、ItemProcessor.process メソッドを実行する前にメソッドを1 回だけ呼び出したいということです。
ItemProcessListener.beforeProcess を使用すると、ItemReader で読み取られるすべてのアイテムに対して呼び出されます。
これを達成する方法はありますか?ItemProcessListener の他の代替手段はありますか?
私が達成しようとしているのは、ItemProcessor.process メソッドを実行する前にメソッドを1 回だけ呼び出したいということです。
ItemProcessListener.beforeProcess を使用すると、ItemReader で読み取られるすべてのアイテムに対して呼び出されます。
これを達成する方法はありますか?ItemProcessListener の他の代替手段はありますか?
メソッドが確実に 1 回呼び出されるようにする最善の選択は、a を使用してStepExecutionListener
、このリスナーを ItemProcessor を使用するステップにバインドすることです。
または、直前に呼び出す必要がある場合は、 でフラグをItemProcessor.process()
追加しItemProcessListener
て管理しStepExecutionContext
ます。このフラグが設定されていない ( false
) または存在しない場合は、メソッドを呼び出してフラグを設定し、それ以外の場合true
は何もしません。
ただし、ユースケースをより正確に把握できれば、より良い解決策を見つけることができます。
希望が助けになります!