java – Spring Batch在运行步骤之前解析步骤的资源
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Batch在运行步骤之前解析步骤的资源,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2189字,纯文字阅读大概需要4分钟。
内容图文
![java – Spring Batch在运行步骤之前解析步骤的资源](/upload/InfoBanner/zyjiaocheng/816/b92da1bfe1484c07a8df9a44e7f9d81a.jpg)
我有一个包含两个步骤(到目前为止)的Spring Batch作业.
作业的第一步是在tasklet中实现的.它需要处理需要处理的逗号分隔值(CSV)文件(使用大量业务逻辑来确定它们是哪些),并将它们复制到“drop zone”目录中.
第二步配置为使用读取器和写入器进行面向块的处理.读者是一个MultiResourceItemReader …它在drop zone目录中查找所有CSV文件,并将每个文件委托给“真正的”读者(解析CSV).
我的问题是,即使第一步成功,第二步也无法在放置区目录中找到任何CSV文件.有趣的是,如果我立即再次运行批处理作业…那么第二步确实找到并处理文件!
我在推测,但看起来Spring Batch在开始时解决了第二步的通配符模式……而不是等到第二步运行的时候.即使第一步复制了它应该的文件,第二步已经确定那里没有文件.
我是Spring Batch的新手,还在学习我的方法.我在这里缺少哪些具有背景或范围的明显事物?我的工作定义的相关部分如下.谢谢!
...
<!-- JOB DEFINITION -->
<job id="notificationJob" xmlns="http://www.springframework.org/schema/batch">
<step id="copyFilesToLocal">
<tasklet transaction-manager="jobRepositoryTransactionManager" ref="getFilesTasklet" />
<next on="COMPLETED" to="processFiles"/>
</step>
<step id="processFiles">
<tasklet transaction-manager="ecommerceTransactionManager">
<chunk reader="multiFileReader" writer="notificationEmailWriter" commit-interval="1" />
</tasklet>
</step>
</job>
<!-- FIRST STEP -->
<bean id="getFilesTasklet" class="com.mypackage.FileMovingTasklet">
<property name="localDao">
<bean class="com.mypackage.BatchLocalDao">
<property name="dataSource" ref="jobRepositoryDataSource" />
</bean>
</property>
<property name="sourceDirectory">
<bean id="sourceDirectory" class="org.springframework.core.io.FileSystemResource">
<constructor-arg value="/mnt/source-directory" />
</bean>
</property>
<property name="destinationDirectory">
<bean id="destinationDirectory" class="org.springframework.core.io.FileSystemResource">
<constructor-arg value="/home/myuser/drop-zone" />
</bean>
</property>
</bean>
<!-- SECOND STEP -->
<bean id="multiFileReader" class="org.springframework.batch.item.file.MultiResourceItemReader">
<property name="resources" value="file://home/myuser/drop-zone/*.csv" />
<property name="delegate" ref="myFileReader" />
</bean>
...
解决方法:
您的“multiFileReader”需要是scope =“step”,因此它会延迟模式扩展(bean属性的初始化),直到执行该步骤.
内容总结
以上是互联网集市为您收集整理的java – Spring Batch在运行步骤之前解析步骤的资源全部内容,希望文章能够帮你解决java – Spring Batch在运行步骤之前解析步骤的资源所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。