春バッチジョブを作成しました。私のリーダー クラスは、DB からデータを読み取り、以下の構造を持つデータセット オブジェクトを返します。
@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 には、2 つのルート タグ要素が含まれます。
<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