【问题标题】:Spring Batch - Decrypt before Chunk ReadSpring Batch - 在块读取之前解密
【发布时间】:2013-11-14 01:22:47
【问题描述】:

我正在使用 Spring Batch,需要一些关于如何继续的建议....

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

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

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    您可以分两步进行:

    1. 使用Tasklet 解密内存中的文件(例如在byte[] 中)
    2. 使用标准FlatFileItemReader,使用基于byte[](如ByteArrayResource)的新创建资源作为读取器资源作为输入(作为替代,您可以编写自定义读取器)

    【讨论】:

      【解决方案2】:

      正如 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,作为写入器,使用自定义写入器将您的数据存储在内存中。

      希望能帮到你。

      【讨论】:

      • 解密文件的要求可能源于安全策略要求加密所有静态文件这一事实。将纯文本写入文件系统的中间步骤违反了该策略,因此在这些情况下不起作用。
      猜你喜欢
      • 1970-01-01
      • 2016-07-10
      • 2023-03-25
      • 2012-12-07
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2020-04-13
      • 2016-08-24
      相关资源
      最近更新 更多