0

私の仕事の最後のステップでは、既存のDAOを呼び出して、ItemWriterをXMLとして保持する必要があるオブジェクトの複雑なグラフをクエリして返す方が簡単です。XStreamを注釈付きで使用します。

私が見るItemReaderAdapterのすべての例は、反復する必要のあるオブジェクトのコレクションを初期化するためにinitializingBeanを実装しています(基本的に、DBでクエリを実行します)。

これは、afterPropertiesSet()が呼び出されたときに(ジョブの開始時に!)データがDBにある場合にうまく機能しますが、読み取らなければならないデータは現在のジョブのステップで保持されます。この場合、ItemReaderAdapterをどのように使用できますか?

概要:

ステップ1:xmlを読み取り、DB(trxA)にオブジェクトを書き込みます

ステップ2:flatFileを読み取り、オブジェクトをDB(trxB)に書き込みます

ステップ3:trxAのビジネスロジック

ステップ4:trxBのビジネスロジック

ステップ5:(これは1つです;-))trxAとtrxBのunifiedObjectを返すDAOを呼び出します。

基本的に、私は知る必要があります:ジョブの開始ではなくステップの開始時に初期化するようにアダプタに指示する方法はありますか?

よろしく

編集:明確にするために、これは本で取られた例です

public class ProductServiceAdapter implements InitializingBean {
  private ProductService productService;
  private List<Product> products;
public void afterPropertiesSet() throws Exception {
  this.products = productService.getProducts();
}
public Product nextProduct() {
  if (products.size()>0) {
    return products.remove(0);
  } else {
    return null;
  }
}

DAOアクセスはafterPropertieSet()で行われるため、私の場合は機能しません。

4

1 に答える 1

2

ステップの開始時に「何か」を実行したい場合は、これを使用してbeforeStep()を実装します。

StepExecutionListener

次に、このように構成します

<step id="concreteStep">
<tasklet>
    <chunk reader="itemReader" writer="itemWriter" commit-interval="5"/>
    <listeners>
        <listener class="com.Listener"/>
    <listeners>
</tasklet></step>
于 2012-11-23T20:37:32.930 に答える