java - 在运行时动态选择一个 spring-batch reader

标签 java spring spring-batch

我有一个 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/

相关文章:

java - 按原样将十六进制数据写入文件?

java - 为什么双端队列(ArrayDeque)容量是2的幂?

java - 负载均衡器后面的 Spring OAuth2 SSO

java - 希望在使用故意错误的 JSON 有效负载时测试预期错误

spring-batch - 如何在Spring批处理中使用decider?

java正则表达式,同时在括号上拆分字符串

java - 如何从 jsp 文件中模型的特定列打​​印 java arrayList 的值

java - 如何指定可执行 Spring Boot Jar 中存在的 WireMock 映射和文件的路径?

hibernate - 交易所需异常 : no transaction is in progress while using JPAItemWriter

java - 从 spring 批处理器调用 Async REST api