我是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>
请建议我应该使用什么unmarshaller以及如何开始这个。最后,我必须将其转换为多线程以进行优化和性能。
答案 0 :(得分:0)
答案 1 :(得分:0)
无需编写自己的作家。 Spring包含一个MultiResourceItemWriter,用于将项目编写为多个xml。 我正在使用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>