0

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

4

1 回答 1

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");
    }

}

将侦听器映射到 XML 中的 Step :

<step id="step1">
    <tasklet>
    <chunk reader="myReader" writer="flatFileItemWriter"
        commit-interval="1" />
        <listeners>         
                 <listener ref="customItemReaderListener" />            
        </listeners>
    </tasklet>
</step>
于 2018-01-14T01:07:56.133 回答