java – Spring Batch:创建一个从Web服务读取xml文件的ItemRead
我正在尝试创建一个
Spring Batch作业,该作业将处理将通过REST调用提供的xml文件.
我正在尝试使用托管在互联网上的XML文件来测试它.该文件位于:http://www.w3schools.com/xml/plant_catalog.xml 我在本地下载了这个文件,并且能够将它转换为一个对象并编写它,但我不知道如何在不在本地下载文件的情况下也能这样做.这在本地工作,但是如何指定URL作为要读取的xml文件的资源?谢谢 :) 发射后的context.xml <batch:job id="job1"> <batch:step id="step1"> <batch:tasklet transaction-manager="transactionManager" start-limit="100" > <batch:chunk reader="CustomPlantReader" writer="writer" commit-interval="1" /> </batch:tasklet> </batch:step> </batch:job> 自定义读者bean: <bean id="CustomPlantReader" class="org.springframework.batch.item.xml.StaxEventItemReader" scope="step"> <property name="fragmentRootElementName" value="PLANT" /> <property name="resource" value="file:/C:/source/plant_catalog.xml" /> <property name="unmarshaller" ref="PlantUnmarshaller" /> </bean> <bean id="PlantUnmarshaller" class="org.springframework.oxm.castor.CastorMarshaller"> <property name="ignoreExtraElements" value="true" /> <property name="mappingLocation" value="linemapper/mapping.xml" /> </bean> 作为参考,如果有人想看到mapping.xml文件,这就是它的样子.它将xml节点映射到名为Plant.java的域对象 <mapping> <class name="com.example.project.Plant"> <map-to xml="PLANT" /> <field name="common" type="string"> <bind-xml name="COMMON" node="element"/> </field> <field name="botanical" type="string"> <bind-xml name="BOTANICAL" node="element"/> </field> <field name="zone" type="string"> <bind-xml name="ZONE" node="element"/> </field> <field name="light" type="string"> <bind-xml name="LIGHT" node="element"/> </field> <field name="price" type="string"> <bind-xml name="PRICE" node="element"/> </field> <field name="availability" type="string"> <bind-xml name="AVAILABILITY" node="element"/> </field> </class></mapping> 解决方法
StaxEventItemReader获取资源.
看一下 documentation,您将看到您可以轻松使用不在您的文件系统上的资源.您可以获得InputStream的任何内容都可以转换为Resource. 默认情况下,我记得使用UrlResource并返回ClasspathResource.
所以你可以使用这个: <property name="resource" value="http://www.w3schools.com/xml/plant_catalog.xml" /> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |