我正在使用春季批次,需要一些关于如何继续的建议......
我有一个加密文件,需要解密并存储在内存中(而不是文件中)。一旦解密,我想使用一个块读取器使用spring batch的块读取器 - 处理器逐行处理解密文件。
如何配置块读取器/解析内存中的流?
答案 0 :(得分:1)
您可以分两步完成:
Tasklet
byte[]
中)
FlatFileItemReader
作为读者资源,使用基于byte[]
(如ByteArrayResource
)作为输入的新创建资源(作为替代方案,您可以编写自定义阅读器) 答案 1 :(得分:1)
正如上一篇答案中所说的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 ,并作为编写者将数据存储在内存中。