spring 批处理平面文件读取器访问要在 Writer 中使用的页眉和页脚变量

问题描述

我正在使用 spring 批处理平面文件阅读器来读取带有页眉和页脚值的文件。以下是示例文件输出文件,每条记录都应附加标题日期和文件序列。示例输入和输出如下。 有人可以建议吗

  1. 是否有办法将页眉值和页脚值设置为作业参数并在编写器中使用?
  2. 有什么方法可以在 writer 中获取页眉和页脚值?提前致谢!
HH20210218001         --Header starting with "HH",date(20210218),filesequence(001)
name110
name220
name330
name440
name770
FT005                --Footer with "FT" and number of records

输出:(日期+文件序列(001)+姓名+年龄)

20210218001name110
20210218001name330
20210218001name440
20210218001name770

下面是我的文件阅读器

    <bean id="fileItemReader"
        class="org.springframework.batch.item.file.FlatFileItemReader"
        scope="step">
        <property name="resource" value="classpath:input/input.txt"></property>
        <!-- <property name="linesToSkip" value="2" /> -->
        <property name="lineMapper">
            <bean
                class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
                <property name="linetokenizer">
                    <bean
                        class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
                        <property name="names" value="name,age" />
                        <property name="columns" value="1-5,6-8"></property>
                        <property name="strict" value="false" />

                    </bean>
                </property>
                <property name="fieldSetMapper">
                    <bean class="org.test.MyMapper">
                    </bean>
                </property>

            </bean>
        </property>

    </bean>

解决方法

  1. 是否有办法将页眉值和页脚值设置为作业参数并在编写器中使用?

不,那时已经太晚了。步骤开始时,作业参数已经设置,无法更改。

  1. 有没有办法在 writer 中获取页眉和页脚值?

根据您的预期输出,您不需要页脚中的任何内容。如果您想从编写器的标题中获取信息,可以分两步完成:

  • 步骤 1:读取(仅)标头并将任何需要的信息放入执行上下文中
  • 第 2 步:使用分步范围的编写器,从执行上下文中获取任何必需的信息并使用它来编写项目

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...