0

春のバッチ サンプルでは、​​csv 形式から db テーブル、db テーブルから csv などにデータをコピーする例がたくさんあります。たとえば、csv からデータをコピーするなど、ユーザーが特定のジョブを選択できる方法があるか知りたいと思いました。 file を指定し、宛先形式 (excel、db、pdf) も指定します。したがって、ジョブの宛先形式はユーザー入力に依存します。

ありがとう!タルン・サプラ

4

1 に答える 1

1

Spring Batch がユーザー入力を処理しないバッチ フレームワークであることを考えると、ここで適切なシナリオを扱っているかどうかはわかりません。ただし、ここにはいくつかの異なるオプションがあります。

  1. ジョブ パラメーターと決定ステップを使用して、ItemReader/ItemWriter の正しい組み合わせに誘導します。これの欠点は、実装ごとにステップを定義する必要があることです (1 つは PDF を処理するためのもの、もう 1 つは Excel のためのものなど)。パフォーマンス。

  2. よりクリーンなアプローチでは引き続きジョブ パラメータを使用しますが、ClassifierCompositeItemWriter を使用して適切なライターに委譲します。この ItemWriter は、実装タイプ (PDF、Excel など) ごとに 1 つの ItemWriter デリゲートで構成され、構成する Classifier インターフェースの実装に基づいて指示します。これは構成の観点からはよりクリーンなアプローチですが、ItemWriter が処理する個々の項目をそれぞれ評価するという欠点があります (実行全体が実行ごとにすべての項目を同じ ItemWriter に送信することを意図していると仮定すると、これは欠点です) )。

  3. 最後に、理論的には、Spring の Bean ファクトリの概念を使用して、ジョブの開始時に ItemWriter を注入できるはずだと思います。記録のために、これは純粋に憶測であり、実際にこれを試したことはありません。

Michael T Minella Pro Spring Batch
の著者

于 2011-06-01T20:22:55.783 に答える