我们有一个旧的代码库,我认为通过选择一个好的批处理框架可以大大改进。
我已经开始尝试使用Spring批处理并决定(在阅读文档,有关它的多本书籍和论坛之后)了解它的最佳方式是实际使用它,所以我重新开发了一些现有的Spring Batch应用程序。
以下是我重新开发的简单应用:
现在,我所做的是我通过3个步骤创建了一份工作:
Step1是:读取POJO的行(读者,在这种情况下基于jdbc),排除项目(处理器),写入文件(writer)。简单。 :)
Step2:要上传到FTP的tasklet
Step3:现在,这就是我遇到麻烦的地方。我需要重用Step1中的POJO列表。
我的理解是我有两种选择:
1)使用StepExecutionContext,在那里保存List和ExecutionContextPromotionListener实现,以在Step1和Step2以及Step2和Step3之间传递列表。
或
2)我使用相同的阅读器和处理器,这次使用不同的编写器。
我真的不喜欢这两种方法
1)看起来很乱,我在多个地方读过,在这种情况下放置更大的东西不是一个好习惯(我的清单会容纳5-10000个对象)
2)似乎浪费了资源,这又是一种不好的做法。在这种情况下,我可以逃脱它,但在更复杂的阅读器/处理器的情况下,这将是一个非常糟糕的重复工作。
做我想做的事情的最佳方式是什么? 我在这里正确使用Spring Batch吗?
答案 0 :(得分:2)
这就是我如何构建工作步骤。
在执行下游步骤时,我添加了一个防止数据库更改的步骤。
答案 1 :(得分:1)
我一直在阅读“Spring Batch Essientials”一书,他们有想法使用“持有者bean”来保存数据。注入bean来设置并获取数据。