FieldSet
在 Spring Batch 中处理平面文件时,无论是用于输入还是输出,最重要的类之一就是 FieldSet。许多架构和库都提供了帮助您从文件读取的抽象,但它们通常返回一个 String 或一个 String 对象数组。这实际上只完成了一半的工作。FieldSet 是 Spring Batch 提供的抽象,用于实现将文件资源中的字段进行绑定。它允许开发者以与处理数据库输入几乎相同的方式来处理文件输入。FieldSet 在概念上类似于 JDBC 的 ResultSet。FieldSet 只需要一个参数:一个包含标记的 String 数组。此外,您还可以选择配置字段名称,以便可以像 ResultSet 那样,通过索引或名称访问这些字段,如下例所示:
String[] tokens = new String[]{"foo", "1", "true"};
FieldSet fs = new DefaultFieldSet(tokens);
String name = fs.readString(0);
int value = fs.readInt(1);
boolean booleanValue = fs.readBoolean(2);
FieldSet 接口上还有更多选项,例如 Date、long、BigDecimal 等。FieldSet 的最大优势在于它提供了一致的平面文件输入解析能力。各个批处理作业无需以可能出乎意料的不同方式进行解析,无论是在处理因格式异常引发的错误时,还是在执行简单的数据转换时,都能保持一致性。