単純にリーダー、ライターと同じクラスを使用して、インスタンス変数を共有することができます。実際には、ジョブの完了後に '@afterJob'メソッドにStepExecutionListenerを実装してメールを送信するなど、同じオブジェクトを使用しています。
これは、読者とライターが単純なコードを持っている場合には良いアプローチです。あるいは、そのコードを別のクラスに委譲することもできます。これは、実際のロジックを持つリーダライタクラスとセパレータクラスを分離し、それらのクラスにインスタンス変数を渡すことができます。 設定でリーダー、ライター、リスナーと同じクラスを定義するだけで済みます。
public class CommitWriter implements ItemWriter<myObject>, ItemReader<myObject> , StepExecutionListener{
private myPojo sharedObject;
//Read method goes here
public myObjectread() throws Exception{
}
// Write method goes here
public void write(List<? extends myObject> arg0)
throws Exception {
}
//After job
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
}
}
あなたはJobContext – Panther
でのカウントのようなだけで、関連する情報を永続化されていませんなぜ私が持続したい、しかし、SNSに通知を送信するだけでジョブの後に必要としません。このような値がたくさんあります。私の仕事は再開できません。私はすでにDB過負荷の仕事の後、関連するメタデータをクリアしています。 –
私は現在JavaのThreadLocalフェッチを試みています。これは私をここで助けます:) –