gpt4 book ai didi

java - Spring 批处理 : custom ItemReader

转载 作者:行者123 更新时间:2023-11-30 08:07:31 25 4
gpt4 key购买 nike

我有一个带有简单自定义读取器和写入器的 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/batch/item/support/ListItemReader.java

关于java - Spring 批处理 : custom ItemReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com