繁体   English   中英

Spring Batch:自定义ItemReader

[英]Spring Batch : custom ItemReader

我有一个带有简单自定义阅读器和编写器的Spring Batch项目。 当我运行代码时,我将无休止地循环打印第一项“项目1”。 我究竟做错了什么?

这是我的代码:

Reader.java

public class Reader implements ItemReader<SimpleItem> {


public SimpleItem read() throws Exception, UnexpectedInputException, ParseException {
    if (getIterator().hasNext()) {
        return getIterator().next();
    }
    return null;
}

public Iterator<SimpleItem> getIterator() {
    List<SimpleItem> list = new ArrayList();
    list.add(new SimpleItem("item 1"));
    list.add(new SimpleItem("item 2"));
    return list.iterator();
}

}

Writer.java

public class Writer implements ItemWriter<SimpleItem> {
@Override
public void write(List<? extends SimpleItem> list) throws Exception {
    for(SimpleItem item : list) {
        System.out.println(item.getName()); // this prints item 1 endelessly
    }
}
}

每次对ItemReader#read的调用都始于对Reader#getIterator的调用,这意味着每次调用read都会获得一个新列表。 您确实只想创建一次列表。

我们已经有一个基于ListItemReader实现。 您可以在以下Github上查看其代码: https//github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/批/项目/支持/ ListItemReader.java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM