春のバッチ サンプルでは、csv 形式から db テーブル、db テーブルから csv などにデータをコピーする例がたくさんあります。たとえば、csv からデータをコピーするなど、ユーザーが特定のジョブを選択できる方法があるか知りたいと思いました。 file を指定し、宛先形式 (excel、db、pdf) も指定します。したがって、ジョブの宛先形式はユーザー入力に依存します。
ありがとう!タルン・サプラ
春のバッチ サンプルでは、csv 形式から db テーブル、db テーブルから csv などにデータをコピーする例がたくさんあります。たとえば、csv からデータをコピーするなど、ユーザーが特定のジョブを選択できる方法があるか知りたいと思いました。 file を指定し、宛先形式 (excel、db、pdf) も指定します。したがって、ジョブの宛先形式はユーザー入力に依存します。
ありがとう!タルン・サプラ
Spring Batch がユーザー入力を処理しないバッチ フレームワークであることを考えると、ここで適切なシナリオを扱っているかどうかはわかりません。ただし、ここにはいくつかの異なるオプションがあります。
ジョブ パラメーターと決定ステップを使用して、ItemReader/ItemWriter の正しい組み合わせに誘導します。これの欠点は、実装ごとにステップを定義する必要があることです (1 つは PDF を処理するためのもの、もう 1 つは Excel のためのものなど)。パフォーマンス。
よりクリーンなアプローチでは引き続きジョブ パラメータを使用しますが、ClassifierCompositeItemWriter を使用して適切なライターに委譲します。この ItemWriter は、実装タイプ (PDF、Excel など) ごとに 1 つの ItemWriter デリゲートで構成され、構成する Classifier インターフェースの実装に基づいて指示します。これは構成の観点からはよりクリーンなアプローチですが、ItemWriter が処理する個々の項目をそれぞれ評価するという欠点があります (実行全体が実行ごとにすべての項目を同じ ItemWriter に送信することを意図していると仮定すると、これは欠点です) )。
最後に、理論的には、Spring の Bean ファクトリの概念を使用して、ジョブの開始時に ItemWriter を注入できるはずだと思います。記録のために、これは純粋に憶測であり、実際にこれを試したことはありません。
Michael T Minella Pro Spring Batch
の著者