Java Batch(JSR-352) - 如何从批处理中设置作业参数?

时间:2014-03-26 12:37:13

标签: java spring java-ee spring-batch

我有一个从FTP服务器获取文件并将其存储在临时文件夹中的小程序。我想将该文件夹的路径设置为批处理作业参数,以便其他步骤可以访问该文件。这是可能的,如果是的话,怎么样?我的JSR 352实现是春季批处理。

编辑:我正在使用Spring Batch 3.0里程碑3。

3 个答案:

答案 0 :(得分:3)

您可以使用JSR-352的工具将文件的位置作为作业参数传递,如下所示:

<step id="step1">
    <batchlet ref="fooBatchlet">
        <properties>
            <property name="fileName" value="#{jobParameters['testParam']}"/>
        </properties>
    </batchlet>
</step>

以上假设您使用batch.xml或Spring DI来定义fooBatchlet。否则,fooBatchlet将需要是完全限定的类名。

答案 1 :(得分:1)

您使用的是哪个版本的Spring?

假设v3,您可以存储信息以传递到StepContext或JobExecutionContext中的其他作业步骤。您可以从ChunkContext中检索StepContext,它将传递给BatchletAdapter RepeatStatus方法。

或者你可以设置一个JVM参数,但考虑到Spring提供了上述方法,感觉有点笨拙。

答案 2 :(得分:1)

感谢Michael Minella,我发现我可以在我的Batchlet中注入JobContext。

@Inject
private JobContext jobContext;

现在我可以使用此jobContext来设置属性。

jobContext.setTransientUserData(myData);