2016-07-01 19 views
0

webappとすべてのジョブ設定ファイルのすべてをロードするアプリケーションコンテキストがあり、スコープなしの単純なItemReader = "step"というジョブを持っている場合、リーダーはシングルトン、右 ?ですから、コントローラからSimpleJobLauncherを介して2回ジョブを起動すると、同じBeanを使用します。私はスコープ= "ステップ"を入れない限り、ジョブの実行ごとに1つのBeanを持っている?Springバッチでは、scope = "..."のないItemReaderのスコープは何ですか?

一方、私がCommandLineJobRunnerからジョブを起動すると、2つの異なるアプリケーションコンテキストが存在するため、2つの異なるBeanがあります。

私のアサーションは有効ですか?

ありがとうございました

+1

ここで注意してください。 'step'スコープは、ジョブごとに1つだけでなく、1ステップあたりのインスタンスを作成します(マルチスレッドの分割されたステップはそれぞれ独自のインスタンスを取得します)。 –

答えて

1

はい正しいです。基本的に、SpringContextのすべてのBeanインスタンスはシングルトンです。

ただし、ほとんどのリーダーまたはライターには状態があります。例えば、FlatFileItemReaderは一度しか実行できません。その後、ファイルの終わりを指し、その "close"メソッドが呼び出されました。したがって、単にジョブを再開すると、FlatfileItemReaderが閉じられているため、機能しません。

このような場合は、sope = stepで定義する必要があります。

関連する問題