字段集
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
最大的优势在于它提供了对平面文件输入的一致解析功能。这样可以避免每个批处理任务以可能意想不到的方式进行不同的解析,从而实现一致性,无论是在处理因格式异常引起的错误时,还是在执行简单的数据转换时。