我正在使用以下流程创建Spring Batch / Spring Boot项目:
我正在使用Collections.sort
之前使用过的实现,但在这里不适合它。是否有像Collections.sort
这样的资源?
第一行 - 标题//第2行和第3行 - 实际信息//最后一行 - 预告片
因此,程序需要读取第一行,例如将其转换为Header.class
,并且应该对其他类型执行相同的操作。
如果有人有任何建议我如何解决这种情况,我将不胜感激。如果需要进一步理解,将发布更多信息。
提前致谢。
答案 0 :(得分:0)
问题1。
创建自定义比较器。请参阅这个仅比较文件名的简单示例。
import org.springframework.core.io.FileSystemResource;
public class MyComparator implements java.util.Comparator {
@Override
public int compare(Object o1, Object o2) {
FileSystemResource f1 = (FileSystemResource) o1;
FileSystemResource f2 = (FileSystemResource) o2;
//Compare the file names. Add any other custom logic here.
return f1.getFilename().compareTo(f2.getFilename());
}
}
然后将此Comparator作为MultiResourceItemReader中的属性包含。
<bean id="customComparator" class="MyComparator"/>
<bean id="multiResourceReader"
class=" org.springframework.batch.item.file.MultiResourceItemReader">
<property name="resources" value="file:csv/inputs/sample-*.csv" />
<property name="delegate" ref="flatFileItemReader" />
<property name="comparator" ref="customComparator" />
</bean>
对于问题2,您需要使用ItemProcessor来转换行或使用特殊逻辑处理它。一个很好的例子是 - http://www.mkyong.com/spring-batch/spring-batch-hello-world-example/