我是春季批次新手。我正在使用平面文件项阅读器,在xml文件中配置。然后有一个处理器处理创建的每个obj。我需要预先处理文件的内容,然后再将其传递给文件项阅读器。处理后的结果/文件不应写入磁盘。我可以通过xml文件配置知道如何做到这一点。 是通过tasklet还是扩展平面文件项阅读器?然后处理器应该像以前一样工作而不做任何改变。我需要在将文件传递给平面文件项阅读器之前引入一个图层。
答案 0 :(得分:0)
您可以使用ItemReadListener
。 ItemReadListener有三个回调方法。
beforeRead , afterRead and onReadError.
你可以在beforeRead
中使用你的逻辑。
CustomItemReaderListener
public class CustomItemReaderListener implements ItemReadListener<Domain> {
@Override
public void beforeRead() {
System.out.println("ItemReadListener - beforeRead");
//I need to pre process contents of file before passing it to file item reader
// add this logic here
}
@Override
public void afterRead(Domain item) {
System.out.println("ItemReadListener - afterRead");
}
@Override
public void onReadError(Exception ex) {
System.out.println("ItemReadListener - onReadError");
}
}
将侦听器映射到Step in XML:
<step id="step1">
<tasklet>
<chunk reader="myReader" writer="flatFileItemWriter"
commit-interval="1" />
<listeners>
<listener ref="customItemReaderListener" />
</listeners>
</tasklet>
</step>