我有一个 spring-batch 作业,可以将各种银行对帐单转换成我的应用程序。每种银行对帐单类型都有不同的阅读器,并且所有这些只有一个编写器。工作非常简单 - 读取、处理和写入:
<batch:job id="importer" restartable="true">
<batch:step id="import">
<batch:tasklet>
<batch:chunk reader="reader" writer="writer" processor="processor" commit-interval="10" />
</batch:tasklet>
</batch:step>
</batch:job>
现在,我希望最终用户提供一个报表文件以及银行信息,然后在运行时选择相应的 spring-batch 读取器来运行此作业。理想情况下,如果我能在第一步中预读并尝试先“猜测”银行表格对帐单格式,那就太好了。但我离题了。
是否可以在运行作业之前将读取器注入(inject)作业?还是有更好的方法来实现我的目标?
最佳答案
您可以通过输入参数/或属性文件设置阅读器:
<batch:chunk reader="#{jobParameters['reader.beanId']}" writer="writer" processor="processor" commit-interval="10" />
您还可以考虑作业和步骤属性的后期绑定(bind),这里是来自 spring-batch step-scope 的链接
关于java - 在运行时动态选择一个 spring-batch reader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955363/