【问题标题】:Spring Batch Writing as complex XML outputSpring Batch Writing 作为复杂的 XML 输出
【发布时间】:2012-07-02 20:55:42
【问题描述】:

我是 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>

请建议我应该使用什么解组器以及如何开始。最终,我必须将其转换为多线程以进行优化和提高性能。

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    无需编写自己的作家。 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>
    

    【讨论】:

      【解决方案2】:

      您应该编写一个编写 XML 文件的 Writer。选择一个库并在 Writer 中使用它。

      为您未来的多线程优化编写线程安全代码。

      来自 Spring Batch 示例的示例:XML Processing

      【讨论】:

      • 感谢 Jean,但我找不到任何写入复杂 xml 的示例。我确实使用了 XStreamMarshaller,但我不确定如何将它用于问题中提到的 xml。还有任何使用现有弹簧批处理多线程执行此任务的提示
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      相关资源
      最近更新 更多