2

私はSpring Batchを初めて使用し、データベースから読み取り、データを複数のXMLに書き込むタスクを設計する必要があります。出力形式は次のとおりです

    <Records xmlns"somevalue" ...>
  <Version>1.0</Version>
  <SequenceNo>1</SeqeunceNo>
  <Date>12/12/2012 12:12:12 PM<Date>
  <RecordCount>100</RecordCount><!--This is total number of Update and Insert txns-->
  <SenderEmail>asds@asds.com</SenderEmail>
  <Transaction type="Update">
    <TxnNo>1</TxnNo>
    <Details>
      <MoreDetails>
      </MoreDetails>
    </Details>
  </Transaction>
  <Transaction type="Insert">
    <TxnNo>2</TxnNo>
    <Details>
      <MoreDetails>
      </MoreDetails>
    </Details>
  </Transaction>
  <Transaction type="Update">
  </Transaction>
  <Transaction type="Update">
  </Transaction>
</Records>

どのアンマーシャラーを使用する必要があるか、およびこれを開始する方法を提案してください。最終的には、最適化とパフォーマンスのためにマルチスレッドに変換する必要があります。

4

2 に答える 2

0

独自のライターを作成する必要はありません。Spring には、項目を複数の xml に書き込むための MultiResourceItemWriter が含まれています。jaxb2Marshaller を使用して複雑な XML を記述しています。

<bean id="multiItemWriter" class="org.springframework.batch.item.file.MultiResourceItemWriter"> 
    <property name="resource" value="file:data/output/output.xml"/> 
    <!-- <property name="resourceSuffixCreator" ref="resourceSuffixCreator"/> --> 
    <property name="saveState" value="true"/> 
    <property name="itemCountLimitPerResource" value="10"/> 
    <property name="delegate" ref="itemWriter" />
</bean>

<bean id="itemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
    <!-- <property name="resource" value="file:data/output/output.xml" /> -->
    <property name="marshaller" ref="customVrdbMarshaller" />
    <property name="rootTagName" value="recordings" />
    <property name="overwriteOutput" value="true" />
</bean>

<bean id="customVrdbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>your.model.model.Albums</value>
        </list>
    </property>
</bean>
于 2013-03-06T09:13:20.990 に答える
0

XML ファイルを書き込むライターをコーディングする必要があります。ライブラリを選択し、ライターで使用します。

将来のマルチスレッドの最適化のために、スレッド セーフなコードを書くように注意してください。

Spring Batch サンプルの例: XML 処理

于 2012-07-03T09:11:28.990 に答える