Reader(StaxEventItemReader)Resource to Domain对象

时间:2014-04-29 08:47:02

标签: jaxb spring-batch

我想将输入资源位置作为String传递给域对象的字段 我的配置如下所示:

<bean id="step2Reader"
        class="org.springframework.batch.item.file.MultiResourceItemReader">
        <property name="resources" value="file:${step2.reader.resource}/*/*/*.xml"></property>
        <property name="delegate" ref="mainReader"></property>
    </bean>

<bean id="mainReader" class="org.springframework.batch.item.xml.StaxEventItemReader"
        scope="step">
        <property name="fragmentRootElementName" value="Domain" />
        <property name="unmarshaller" ref="domainMarshaller" />
    </bean>

    <bean id="domainMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>com.example.Domain</value>
            </list>
        </property>
    </bean>

和Domain.java是一个JAXB生成的类,包含如下字段:

 @XmlElement(name = "PATH_TO_DOCUMENT", required = true)
 private String pathtodocument;

应该由输入资源填充为字符串。

我已经考虑过扩展StaxEventItemReader以包含此功能,或以某种方式使资源显示到域的Processor并填充字段的值,但卡住了。<登记/>
有什么建议吗?

1 个答案:

答案 0 :(得分:2)

让您的com.example.Domain对象实现ResourceAware,以便读者自动将当前资源注入Domain对象。