0

我正在使用春季批次,需要一些关于如何进行的建议....

我有一个加密文件,需要解密并存储在内存中(而不是文件)。解密后,我想使用块读取器使用spring batch的块读取器-处理器逐行处理解密的文件。

如何配置块读取器/解析内存流?

4

2 回答 2

1

正如前面答案中所说的 bellabax,使用 Tasklet解密您的文件,并将解密的文件路径存储在您的 Job Context 中:

ExecutionContext jobExecutionContext = chunkContext.getStepContext().getStepExecution().getJobExecution().getExecutionContext();
jobExecutionContext.putString("decryptedFilePath", decryptedFilePath);

在工作上下文中添加工作的解密文件资源(不要忘记工作范围):

<bean id="decryptedFileResource" class="org.springframework.core.io.FileSystemResource" scope="step">
    <constructor-arg value="#{jobExecutionContext['decryptedFilePath']}" />
</bean>

最后使用Chunkwith 作为读取器的FlatFileItemReader指向您的decryptedFileResource,并作为写入器将您的数据存储在内存中的自定义写入器。

希望能帮到你。

于 2013-11-14T10:07:24.347 回答
1

您可以分两步进行:

  1. 使用 a解密内存中的文件(例如在 a 中byte[]Tasklet
  2. 使用标准FlatFileItemReader,使用基于您的byte[](如ByteArrayResource)作为输入的新创建资源作为阅读器的资源(作为替代,您可以编写自定义阅读器)
于 2013-11-14T07:59:34.773 回答