ユーザーがアップロードした CSV ファイルを処理するための Spring Batch (2.1.9) を検討しています。サポートする必要があるフローには、多くのファイル形式用の 2 つの主要なジョブ テンプレートが含まれています。
- 以下を含むアップロードされたファイルの検証:
- 各レコードに提供されたすべてのフィールドの形式の解析と検証 (regexp を使用)
- マッピングされたオブジェクトのビジネス検証
- 合計レコード数、無効なレコード数、およびエラーの詳細 (行番号とそこで見つかったすべてのエラー) を提供する詳細レポートの生成
ファイルをアップロードしたユーザーによってトリガーされた 2 番目のジョブで完全に処理できるのは、エラーのないファイルのみです。
- ファイルの処理:
- ファイルの解析
- レコードを DB に格納する (サービス コールを使用)
- アップロードされたファイルのすべてのレコードをコミットするか、エラーがある場合はロールバックします
- 処理に関するフィードバックを提供する (成功または失敗)
さまざまな例を見てきましたが、次のような良い例が見つかりませんでした:
- ItemReader のフィールドの正規表現を定義する
- エラーを収集し、ファイル処理レポートを生成します。
- ジョブ全体をコミットまたはロールバックする (コミット間隔なし)
- 単一のジョブ定義を使用し、(ファイル タイプに基づいて) 実行時に CSV フィールド、正規表現、ビジネス検証サービス、および処理サービスに渡す (参照?)
これらの問題に対処するサンプル コードへのポインタをいただければ幸いです