`FieldSet`
在 Spring Batch 中处理平面文件时,无论是作为输入还是输出,最重要的类之一是 FieldSet
。许多架构和库包含用于帮助您从文件读取的抽象,但它们通常返回 String
或 String
对象的数组。这仅仅完成了一半的工作。FieldSet
是 Spring Batch 的抽象,用于实现从文件资源绑定字段。它允许开发者以处理数据库输入的方式来处理文件输入。FieldSet
在概念上类似于 JDBC ResultSet
。FieldSet
只需要一个参数:一个 String
数组的 token。此外,您还可以配置字段的名称,以便可以像 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
最大的优势在于它提供了平面文件输入的统一解析。这样一来,就不会出现每个批处理作业以潜在的非预期方式进行不同解析的情况,而是在处理格式异常导致的错误时或进行简单数据转换时保持一致。