本文介绍了Spring Batch ItemReader列表仅处理一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,我正在尝试使用ListItemReader<String>
、ItemProcessor<String, String>
和ItemWriter<String>
创建Spring批处理作业。,XML如下所示,阅读器、处理器和写入器都是普通的,作业按如下方式启动,但按计划每10秒启动一次。,应用程序启动时,我看到它读取、处理和写入传递给读取器的列表中的三个项目。,因为此sourceJob
使用的是计划计时器,所以我预计每隔10秒就会看到该列表被处理,但实际上我看到的是所有后续运行。,有人知道为什么会发生这种情况吗?我是Spring Batch的新手,对这个问题就是摸不着头脑。,谢谢/w,问题是您将读者标记为scope="prototype"
。应为scope="step"
。,Spring-Batch中只有两个作用域:singleton
(默认值)和step
。,来自javadoc:,和,在Spring上下文启动期间,请查看日志,您将看到以下行:,如您所见,您的读取器已经作为单例创建和管理;Spring-Batch上下文中的动态bean应该使用特殊的step
范围进行管理,以便Spring将在每次执行步骤时创建bean的新副本。,在您的阅读器中,ListItemReader.read()
写为:,从原始列表中删除每个已读项目!读取器构建一次,在第二次执行作业时,列表为空!,这篇关于Spring Batch ItemReader列表仅处理一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,