如何使用xml配置编写自定义平面文件项阅读器

时间:2018-01-13 15:29:14

标签: spring spring-batch flatfilereader

我是春季批次新手。我正在使用平面文件项阅读器,在xml文件中配置。然后有一个处理器处理创建的每个obj。我需要预先处理文件的内容,然后再将其传递给文件项阅读器。处理后的结果/文件不应写入磁盘。我可以通过xml文件配置知道如何做到这一点。 是通过tasklet还是扩展平面文件项阅读器?然后处理器应该像以前一样工作而不做任何改变。我需要在将文件传递给平面文件项阅读器之前引入一个图层。

1 个答案:

答案 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>