Spring-Batch:如何使用StaxEventReader逐节点读取加密的XML文件

时间:2014-12-15 05:09:27

标签: spring-batch public-key-encryption

我正在开发一个迁移实用程序,它从XML读取数据并迁移到ORACLE数据库。

我正在使用Spring Batch。

我的源XML可以在任何位置:

  • 类路径位置
  • 共享网络位置

My Spring Batch配置

<batch:job id="reportJob">
        <batch:step id="step1">
            <batch:tasklet>
                <batch:chunk reader="xmlItemReader" writer="oracleDBWriter"
                    processor="filterReportProcessor" commit-interval="1">
                </batch:chunk>
            </batch:tasklet>
        </batch:step>
    </batch:job>

    <bean id="filterReportProcessor" class="com.mkyong.processor.FilterReportProcessor" />

    <bean id="xmlItemReader" class="org.springframework.batch.item.xml.StaxEventItemReader">
        <property name="fragmentRootElementName" value="record" />
        <property name="resource" value="classpath:xml/report.xml" />
        <property name="unmarshaller" ref="reportUnmarshaller" />
    </bean>

我能够读取XML并转储到DB。

其中一个变化是XML文件不是普通格式,它将使用非对称算法(公钥 - 私钥)加密。

所以我想知道我将无法使用 StaxEventItemReader 逐节点读取。 在此之前我不知道如何

  • 解密文件
  • 逐节点读取。

我当时希望使用ByteArrayResource但是不能像春天批次那样做,并且没有太多的扩展想法。

请建议。

1 个答案:

答案 0 :(得分:1)

Spring Batch目前在阅读时不支持解密。因此,在处理文件之前,您需要单独执行解密文件的步骤。显然,一旦处理完成,您将需要围绕删除解密文件的适当控制。