我创建了一个 spring-batch 作业。我的阅读器类从数据库中读取数据并返回具有以下结构的数据集对象。
@XmlRootElement
@XmlType(propOrder = { "start", "end", "users"})
public class DataSet implements Serializable {
/**
* Start datetime of this data set
*/
private Date start;
/**
* End datetime of this data set
*/
private Date end;
/**
* Providers involved in this data set
*/
private List<User> users;
}
等等......并且作者使用 StaxEventItemWriter 写入上述数据。生成的 xml 包含两个根标记元素。
<root> //added by the startDocument and endDocument methods from stax writer.
<DataSet>......</DataSet> // from the dataSet xsd annotation.
</root>
我需要消除不覆盖 startDocument 和 endDocument 方法。
有没有办法通过配置来做到这一点。请紧急。
我的作家配置如下。
<bean id="testrWriter" class="com.test.writer.TestWriter"
scope="step">
<property name="testXMLWriter" ref="testXMLWriter" />
<property name="baseDirectory" value"#{jobParameters['baseDirectory']}"></property>
</bean>
<bean id="testXMLWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
<property name="overwriteOutput" value="true" />
<property name="marshaller" ref="testJaxb2Marshaller" />
</bean>
<bean id="testJaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.test.service.dto.DataSet</value>
</list>
</property>
</bean