The FieldSet

在 Spring Batch 中处理平面文件时,无论其是输入还是输出,最重要的类之一是 FieldSet。许多架构和库包含有助于您从文件中读取的抽象,但它们通常返回 StringString 对象数组。这实际上只让您完成了任务的一半。FieldSet 是 Spring Batch 的抽象,用于启用对文件资源中字段的绑定。它允许开发人员以与处理数据库输入相同的方式使用文件输入。FieldSet 在概念上类似于 JDBC ResultSetFieldSet 只需要一个参数:令牌的 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 的最大优势在于它可以提供平面文件输入的一致性解析。它不会以可能出乎意料的方式在每个批处理作业中进行不同的解析,而是可以保持一致,无论是在处理格式异常导致的错误,还是在进行简单数据转换时。