【发布时间】:2013-11-14 01:22:47
【问题描述】:
我正在使用 Spring Batch,需要一些关于如何继续的建议....
我有一个加密文件,需要解密并存储在内存中(而不是文件)。解密后,我想使用块读取器使用spring批处理的块读取器-处理器逐行处理解密的文件。
如何配置块读取器/解析内存流?
【问题讨论】:
标签: spring-batch
我正在使用 Spring Batch,需要一些关于如何继续的建议....
我有一个加密文件,需要解密并存储在内存中(而不是文件)。解密后,我想使用块读取器使用spring批处理的块读取器-处理器逐行处理解密的文件。
如何配置块读取器/解析内存流?
【问题讨论】:
标签: spring-batch
您可以分两步进行:
Tasklet 解密内存中的文件(例如在byte[] 中)
FlatFileItemReader,使用基于byte[](如ByteArrayResource)的新创建资源作为读取器资源作为输入(作为替代,您可以编写自定义读取器)【讨论】:
正如 bellabax 在上一个答案中所说,使用 Tasklet 解密您的文件,并将解密的文件路径存储在您的作业上下文中:
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>
最后使用Chunk 作为读取器,FlatFileItemReader 指向您的 decryptedFileResource,作为写入器,使用自定义写入器将您的数据存储在内存中。
希望能帮到你。
【讨论】: