1
我想将输入资源位置作为字符串传递给域对象的字段。
我的配置是这样的:阅读器(StaxEventItemReader)资源到域对象
<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
资源可见,并填充字段的值,但卡住了。
有什么建议吗?
忘了提及我无法修补Domain对象。处理器能否实现此接口,并在处理时更新Domain对象中字段的值? – dimzak
您可以扩展'Domain'类(如'类DomainWithResource扩展域实现ResourceAware')并修改'xml中的domainMarshaller'定义?否则你可以在编组/对象创建期间操作并创建一个实现了ResourceAware ... –
或扩展step2Reader并在'read()'手动设置当前资源名称为Domain.pathtodocument –