多文件输入
在一个Step
中处理多个文件是一个常见需求。假设所有文件格式相同,MultiResourceItemReader
支持XML和平面文件的这种输入类型。考虑目录中的以下文件
file-1.txt file-2.txt ignored.txt
file-1.txt 和 file-2.txt 格式相同,并且出于业务原因,应该一起处理。MultiResourceItemReader
可以使用通配符读取这两个文件。
-
Java
-
XML
以下示例显示如何在Java中使用通配符读取文件
Java 配置
@Bean
public MultiResourceItemReader multiResourceReader() {
return new MultiResourceItemReaderBuilder<Foo>()
.delegate(flatFileItemReader())
.resources(resources())
.build();
}
以下示例显示如何在XML中使用通配符读取文件
XML 配置
<bean id="multiResourceReader" class="org.spr...MultiResourceItemReader">
<property name="resources" value="classpath:data/input/file-*.txt" />
<property name="delegate" ref="flatFileItemReader" />
</bean>
引用的委托是一个简单的FlatFileItemReader
。上述配置从这两个文件读取输入,处理回滚和重启场景。需要注意的是,与任何ItemReader
一样,添加额外的输入(在本例中为文件)可能会在重启时导致潜在问题。建议批处理作业使用各自的单独目录,直到成功完成。
使用MultiResourceItemReader#setComparator(Comparator) 对输入资源进行排序,以确保在重启场景中作业运行之间资源顺序保持不变。 |