2012-02-07 6 views
1

ファイルから行を読み取り、内容を処理してデータベースに書き込むバッチアプリケーションを作成しています。ファイルからの読み込みにFlatFileItemReaderを使用しています。LineCallbackHandlerからItemWriterへのオブジェクトの受け渡し

ファイルの最初の行は、特別な(ヘッダー)で、linesToSkipを使用してスキップされ、LineCallbackHandlerHeaderHandler)を使用して処理されます。 HeaderHandlerは、ヘッダー情報を使用してキャッシュを構築します。

今、このキャッシュを私のItemWriterの範囲内で使用したいと思います。 HeaderHandler内に構築したキャッシュオブジェクトを、ItemWriterに渡す方法がわかりません。これを行うきれいな方法がありますか?

答えて

2

あなたは、少なくとも2つの可能性があります。春のバッチドキュメントを見て、あなたのデータの一時メモリとしてStepExecutionContextを使用

  1. を: passing data to future steps(ちょうどpromotionListener 部分を無視する)あなたのheaderHandlerの書き込みコンテクストにキャッシュし、 ライターがコンテキストからキャッシュをプルする
  2. headerHandlerにinjectedとなるカスタムDataObjectClassまたはString、MapなどのスプリングBeanを使用し、それに応じて(custom)itemWriterがそれを使用します